溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Python中利用tkinter編寫一個(gè)在線翻譯軟件

發(fā)布時(shí)間:2021-02-22 15:06:40 來源:億速云 閱讀:306 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章給大家介紹怎么在Python中利用tkinter編寫一個(gè)在線翻譯軟件,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

Python主要用來做什么

Python主要應(yīng)用于:1、Web開發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲;4、嵌入式應(yīng)用開發(fā);5、游戲開發(fā);6、桌面應(yīng)用開發(fā)。

#-*- 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   #取點(diǎn)讓工具居中
 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='點(diǎn)擊翻譯',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):
 """判斷一個(gè)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) #第三個(gè)框架添加文本框
 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)):    #如果輸入的是中文,那就是中譯英,要用英文句號(hào)
  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)  #第二個(gè)框架添加文本框
 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()

這是效果,雙擊單詞可自動(dòng)查詞,段落翻譯默認(rèn)用有道,不行用谷歌;單詞翻譯默認(rèn)百度,不行用有道。

怎么在Python中利用tkinter編寫一個(gè)在線翻譯軟件

關(guān)于怎么在Python中利用tkinter編寫一個(gè)在線翻譯軟件就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI