Python—使用tkinter制作一款在线翻译软件
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_youdaoclass 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.yviewtextarea.grid(row=1,column=0,columnspan=2)ybar.grid(row=1,column=2,sticky='ns')textarea.bind("" ,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 Trueelse:return Falsedef filterchar(self,char): #过滤字母word=filter(str.isalpha, char)word=''.join(list(word))return worddef getword(self,event,textarea): #单词翻译place=textarea.index('current')row=int(place.split('.')[0]) #第几行col=int(place.split('.')[1]) #第几列col_start=col-15col_end=col+15part1=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("" ,lambda event:self.getword(event,textarea)) #双击触发单词翻译 如果是中译英ybar['command']=textarea.yviewtextarea.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()
这是效果,双击单词可自动查词,段落翻译默认用有道,不行用谷歌;单词翻译默认百度,不行用有道。因为百度不支持段落翻译。

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
