Python使用tkinter制作在线翻译软件


Posted in Python onFebruary 22, 2021

tkinter的功能是如此强大,竟然还能做翻译软件。当然是在线的,我发现有一个quicktranslate模块,可以提供在线翻译功能,相当于提供了一个翻译的接口,利用它就可以制作在线翻译软件了。下面是代码,分享给大家。

注意要首先 pip install quicktranslate

#-*- coding:utf-8 -*-
import tkinter as tk  #使用Tkinter前需要先导入
from tkinter import messagebox,ttk
import datetime,os,time,re,requests
from quicktranslate import get_translate_baidu,get_translate_youdao

class MY_GUI(tk.Tk):
 #初始化
 def __init__(self):
 super().__init__()
 self.set_window()
 self.set_frame()
 self.set_body()
 #设置窗口
 def set_window(self):
 self.title("文本翻译工具v1.0")   #窗口名
 w_width=800        #工具宽度
 w_height=600       #工具高度 
 scn_width=self.maxsize()[0]    #屏幕宽度
 x_point=(scn_width-w_width)//2   #取点让工具居中
 self.geometry('%dx%d+%d+%d' %(w_width,w_height,x_point,100))
 #设置框架
 def set_frame(self):
 self.frame1=tk.Frame(self,pady=15,padx=15)
 self.frame1.grid(row=0,column=0,sticky='w')
 self.frame2=tk.Frame(self,pady=15,padx=15)
 self.frame2.grid(row=1,column=0,sticky='w')
 self.frame3=tk.Frame(self,pady=15,padx=15)
 self.frame3.grid(row=2,column=0,sticky='w')
 #设置组件
 def set_body(self):
 ttk.Label(self.frame1,text='输入要翻译的内容:').grid(row=0,column=0,sticky='w')
 ybar=ttk.Scrollbar(self.frame1,orient='vertical')
 textarea=tk.Text(self.frame1,width=100,height=12,yscrollcommand=ybar.set)
 ybar['command']=textarea.yview
 textarea.grid(row=1,column=0,columnspan=2)
 ybar.grid(row=1,column=2,sticky='ns')
 textarea.bind("<Double-Button-1>",lambda event:self.getword(event,textarea))  #双击触发单词翻译
 ttk.Button(self.frame1,text='点击翻译',command=lambda:self.translator(textarea.get(1.0,'end'))).grid(row=2,column=0,sticky='w')
 ttk.Button(self.frame1,text='清空',command=lambda:self.clear(textarea)).grid(row=2,column=1,sticky='w')
 #功能函数
 def clear(self,textarea):    #清空文本框
 textarea.delete(1.0,'end')

 def is_cn(self,uchar):
 """判断一个unicode是否是汉字"""
 if uchar >= u'\u4e00' and uchar<=u'\u9fa5':
  return True
 else:
  return False

 def filterchar(self,char):   #过滤字母
 word=filter(str.isalpha, char)
 word=''.join(list(word))
 return word

 def getword(self,event,textarea):  #单词翻译
 place=textarea.index('current')
 row=int(place.split('.')[0])  #第几行
 col=int(place.split('.')[1])  #第几列
 col_start=col-15
 col_end=col+15
 part1=textarea.get(str(row)+'.'+str(col_start),str(row)+'.'+str(col)).split()[-1]
 part2=textarea.get(str(row)+'.'+str(col),str(row)+'.'+str(col_end)).split()[0]
 word_f=self.filterchar(part1+part2)
 word_t=get_translate_baidu(word_f)     #百度翻译
 if(word_t=='wrong!'):
  word_t=get_translate_youdao(word_f)    #百度不行就用有道翻译
 textarea=tk.Text(self.frame3,width=100,height=8) #第三个框架添加文本框
 textarea.grid(row=0,column=0) 
 textarea.delete(1.0,'end')
 textarea.insert(1.0,word_f+':\n'+word_t)   #文本框填入翻译结果
 #生词写入生词本
 if(word_t!='wrong!'):
  with open('word.txt','a') as f:
  f.write(word_f+' : '+word_t+"\n")

 def translator(self,content):    #段落翻译
 test_url='http://youdao.com'
 try:
  requests.get(test_url,timeout=2)
 except:
  messagebox.showerror('警告','没有联网')
 if(self.is_cn(content)):    #如果输入的是中文,那就是中译英,要用英文句号
  sep="."
 else:
  sep="。"
 contents=content.split('\n')   #段落分割
 strs=""
 for paragraph in contents:
  if(paragraph):
  sentences=paragraph.split('.')  #句子
  for sentence in sentences:
   if(sentence):
   res=get_translate_youdao(sentence)  #有道翻译
   if(res=='wrong!'):
    res=get_translate_google(sentence) #有道不行就用谷歌翻译
   strs+=res+sep     
  strs+="\n"
 ybar=ttk.Scrollbar(self.frame2,orient='vertical')
 textarea=tk.Text(self.frame2,width=100,height=12,yscrollcommand=ybar.set)  #第二个框架添加文本框
 textarea.bind("<Double-Button-1>",lambda event:self.getword(event,textarea)) #双击触发单词翻译 如果是中译英
 ybar['command']=textarea.yview
 textarea.grid(row=0,column=0)
 textarea.delete(1.0,'end')
 textarea.insert(1.0,strs)              #文本框填入翻译结果
 ybar.grid(row=0,column=1,sticky='ns')

app=MY_GUI()
app.mainloop()

这是效果,双击单词可自动查词,段落翻译默认用有道,不行用谷歌;单词翻译默认百度,不行用有道。

Python使用tkinter制作在线翻译软件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的id()函数解密过程
Dec 25 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
利用pandas读取中文数据集的方法
Jul 25 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
python开根号实例讲解
Aug 30 Python
利用Python实现自动扫雷小脚本
Dec 17 Python
python lambda的使用详解
Feb 26 Python
python实现MD5进行文件去重的示例代码
Jul 09 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 #Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 #Python
python实现计算图形面积
Feb 22 #Python
python实现银行账户系统
Feb 22 #Python
Django实现简单的分页功能
Feb 22 #Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 #Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 #Python
You might like
php读取excel文件的简单实例
2013/08/26 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
原生js封装添加class,删除class的实例
2017/11/06 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
Python中的filter()函数的用法
2015/04/27 Python
讲解Python中的标识运算符
2015/05/14 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
python 字符串常用方法汇总详解
2019/09/16 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
办理信用卡工作证明
2014/01/11 职场文书
个人工作主要事迹
2014/05/08 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
2014年预算员工作总结
2014/12/05 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
毕业实习计划书
2015/01/16 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
公证书
2019/04/17 职场文书
vue实现拖拽交换位置
2022/04/07 Vue.js