1. 程式人生 > >python實現簡單翻譯軟體

python實現簡單翻譯軟體

python實現翻譯軟體效果如圖:

需要聯網才能進行翻譯

思路:

利用Requests模組獲取有道詞典web頁面的post資訊

提取json資料資訊

通過tkinter模組生成gui介面

原始碼如下:

from tkinter import *
from tkinter import messagebox
import requests
# 接收使用者輸入的單詞 進行翻譯
def translation():
    # 獲取使用者輸入的單詞
    content=entry1.get()
    # 去空格
    content=content.strip()
    if content=='':
        messagebox.showinfo("提示","請輸入要翻譯的內容")
    else:
        # 模擬傳送請求
        url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
        # 請求頭
        header={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 "
                             "(KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"}
        data={}
        data['i']=content
        data['from']='AUTO'
        data['to'] = 'AUTO'
        data['smartresult'] = 'dict'
        data['client'] = 'fanyideskweb'
        # # 時間戳
        # data['salt'] = 1538961219261
        # # 簽名 加密
        # data['sign'] = '0f98badcb537e9506a94f4c5e4c8cb90'
        data['doctype'] = 'json'
        data['version'] = '2.1'
        data['keyfrom'] = 'fanyi.web'
        data['action'] = 'FY_BY_CLICKBUTTION'
        data['typoResult'] = 'false'
        # 傳送post請求 並用result接收返回資料
        result=requests.post(url,data=data,headers=header)
        transl=result.json()
        translation=transl['translateResult'][0][0]['tgt']
        res.set(translation)

# 建立視窗
root=Tk()
# 設定標題
root.title("中英互譯")
# 視窗大小
root.geometry('350x93')
# 視窗位置
root.geometry('+500+300')

# 標籤控制元件
label1=Label(root,text='輸入要翻譯的文字:')
# 定位
label1.grid(row=0,column=0)
label2=Label(root,text='翻譯之後的結果:')
label2.grid(row=1,column=0)

# 輸入框控制元件
entry1=Entry(root,font=('微軟雅黑',15))
entry1.grid(row=0,column=1)
# 顯示翻譯結果
res=StringVar()
entry2=Entry(root,font=('微軟雅黑',15),textvariable=res)
entry2.grid(row=1,column=1)

# 按鈕控制元件
button1=Button(root,text='翻譯',width=10,command=translation)
button1.grid(row=2,column=0,sticky=W)
button2=Button(root,text='退出',width=10,command=root.quit)
button2.grid(row=2,column=1,sticky=E)

# 顯示視窗 訊息迴圈
root.mainloop()