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调用Delphi写的Dll代码示例
Dec 05 Python
python使用turtle库绘制时钟
Mar 25 Python
python三引号输出方法
Feb 27 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
Django REST framework 视图和路由详解
Jul 19 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
keras K.function获取某层的输出操作
Jun 29 Python
用python获取txt文件中关键字的数量
Dec 24 Python
pytorch 如何把图像数据集进行划分成train,test和val
May 31 Python
浅析python中特殊文件和特殊函数
Feb 24 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使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python executemany的使用及注意事项
2017/03/13 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python函数返回不定数量的值方法
2019/01/22 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
python属于跨平台语言码
2020/06/09 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
出生医学证明样本
2014/01/17 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
日化店促销方案
2014/03/26 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
python如何做代码性能分析
2021/04/26 Python