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操作json数据的一个简单例子
Apr 17 Python
跟老齐学Python之网站的结构
Oct 24 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
python生成n个元素的全组合方法
Nov 13 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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 高手之路(三)
2006/10/09 PHP
第十一节--重载
2006/11/16 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
php计算年龄精准到年月日
2015/11/17 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
Python下载网络小说实例代码
2018/02/03 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
舞蹈教育学专业推荐信
2013/11/27 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
通用员工手册范本
2015/05/14 职场文书
python用字节处理文件实例讲解
2021/04/13 Python