Python使用tkinter制作在線翻譯軟件
tkinter的功能是如此強(qiáng)大,竟然還能做翻譯軟件。當(dāng)然是在線的,我發(fā)現(xiàn)有一個quicktranslate模塊,可以提供在線翻譯功能,相當(dāng)于提供了一個翻譯的接口,利用它就可以制作在線翻譯軟件了。下面是代碼,分享給大家。
注意要首先 pip install quicktranslate
#-*- coding:utf-8 -*- import tkinter as tk #使用Tkinter前需要先導(dǎo)入 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() #設(shè)置窗口 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)) #設(shè)置框架 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') #設(shè)置組件 def set_body(self): ttk.Label(self.frame1,text='輸入要翻譯的內(nèi)容:').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)) #雙擊觸發(fā)單詞翻譯 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') #功能函數(shù) 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) #文本框填入翻譯結(jié)果 #生詞寫入生詞本 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('警告','沒有聯(lián)網(wǎng)') 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)) #雙擊觸發(fā)單詞翻譯 如果是中譯英 ybar['command']=textarea.yview textarea.grid(row=0,column=0) textarea.delete(1.0,'end') textarea.insert(1.0,strs) #文本框填入翻譯結(jié)果 ybar.grid(row=0,column=1,sticky='ns') app=MY_GUI() app.mainloop()
這是效果,雙擊單詞可自動查詞,段落翻譯默認(rèn)用有道,不行用谷歌;單詞翻譯默認(rèn)百度,不行用有道。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
keras:model.compile損失函數(shù)的用法
這篇文章主要介紹了keras:model.compile損失函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07python實現(xiàn)opencv+scoket網(wǎng)絡(luò)實時圖傳
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)opencv+scoket網(wǎng)絡(luò)實時圖傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03python selenium對應(yīng)的瀏覽器chromedriver版本不一致問題
這篇文章主要介紹了python selenium對應(yīng)的瀏覽器chromedriver版本不一致問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08淺談python 導(dǎo)入模塊和解決文件句柄找不到問題
今天小編就為大家分享一篇淺談python 導(dǎo)入模塊和解決文件句柄找不到問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12詳解在Python程序中解析并修改XML內(nèi)容的方法
這篇文章主要介紹了在Python程序中解析并修改XML內(nèi)容的方法,依賴于解析成樹狀結(jié)構(gòu)后的節(jié)點進(jìn)行修改,需要的朋友可以參考下2015-11-11python實現(xiàn)飛機(jī)大戰(zhàn)游戲(pygame版)
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)pygame版的飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02Python學(xué)習(xí)之名字,作用域,名字空間(下)
這篇文章主要介紹了Python學(xué)習(xí)之名字,作用域,名字空間,緊接上一篇文章內(nèi)容展開全文,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05