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牛刀小试密码爆破
Feb 03 Python
跟老齐学Python之Python文档
Oct 10 Python
python实现音乐下载的统计
Jun 20 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
python 美化输出信息的实例
Oct 15 Python
解决Python一行输出不显示的问题
Dec 03 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
Pytorch 使用tensor特定条件判断索引
Apr 08 Python
python自动计算图像数据集的RGB均值
Jun 18 Python
python图像处理 PIL Image操作实例
Apr 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 class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
美国知名艺术画网站:Art.com
2017/02/09 全球购物
英国电器零售商:PRC Direct
2018/06/21 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
《荷花》教学反思
2014/04/16 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
python区块链持久化和命令行接口实现简版
2022/05/25 Python