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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
用Python实现读写锁的示例代码
Nov 05 Python
python读取xlsx的方法
Dec 25 Python
Python for i in range ()用法详解
Sep 18 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Python页面加载的等待方式总结
Feb 28 Python
python读取mat文件生成h5文件的实现
Jul 15 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
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
js实现自定义路由
2017/02/04 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
vue实现微信分享功能
2018/11/28 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
python解析基于xml格式的日志文件
2017/02/25 Python
python如何获取服务器硬件信息
2017/05/11 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python创建字典的八种方式
2019/02/27 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
python3 xpath和requests应用详解
2020/03/06 Python
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
工作经常出错的检讨书
2014/09/13 职场文书
会计简历自我评价
2015/03/10 职场文书
自我评价优缺点范文
2015/03/11 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python