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 相关文章推荐
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
python制作websocket服务器实例分享
Nov 20 Python
PyQt实现界面翻转切换效果
Apr 20 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
pandas分别写入excel的不同sheet方法
Dec 11 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
Python创建数字列表的示例
Nov 28 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
python爬虫基础知识点整理
Jun 02 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
Python3爬虫发送请求的知识点实例
Jul 30 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
简述php环境搭建与配置
2016/12/05 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python中new方法的详解
2019/01/15 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
智能电子应届生求职信
2013/11/10 职场文书
结婚周年感言
2014/02/24 职场文书
数字化校园建设方案
2014/05/03 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
初中生物教学反思
2016/02/20 职场文书
员工升职自我评价
2019/03/26 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
python读取mnist数据集方法案例详解
2021/09/04 Python