天天看點

實作中英文對接翻譯小程式—最終版

實作中英文對接翻譯小程式—最終版

在原有界面上增加了新的标簽和按鈕

#encoding=utf-8
import json
import requests
import sys
from tkinter import *
import tkinter.messagebox

root = Tk()
root.title("Translate")
root.geometry("400x220+200+200")

def my_translate(word): #翻譯函數,word是要翻譯的内容
    url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionfrom=null'
    #傳輸的參數,其中i為需要翻譯的内容
    key = {
	    'type':"AUTO",
	    'i':word,
	    'doctype':"json",
	    'version':'2.1',
	    'keyfrom':'fanyi.web',
	    'ue':'utf-8',
	    'action':'FY_BY_CLICKBUTTON',
	    'typoResult':'true'
    }
    print(word)
    #key這個字典為發送給有道詞典伺服器端的内容
    response=requests.post(url,data=key)
    #判斷伺服器是否響應成功
    if response.status_code==200:
        #傳回響應結果
        return response.text
    else:
        print("有道詞典調用失敗")
        #響應失敗傳回空
        tkinter.messagebox.showwarning('錯誤',"有道詞典調用失敗")

def get_result(response):
    #通過json.load把傳回的結果加載成json格式
    result=json.loads(response)
    print("輸入的詞為:%s" % result['translateResult'][0][0]['src'])
    print("翻譯結果為:%s" % result['translateResult'][0][0]['tgt'])
    translate_result="翻譯結果為:%s" % result['translateResult'][0][0]['tgt']
    return translate_result

def translate_func():
    output_text.delete(1.0,END) #清除翻譯結果
    global words
    words=input_text.get("0.0","end").split() #從輸入文本讀取要翻譯的内容
    print(words)
    if not words:
        tkinter.messagebox.showwarning('提示',"請輸入你想要翻譯的詞或句") #沒有輸入内容提示
        return None
    
    chinesetoE=False #中譯英标記
    englishtoC=False #英譯中标記
    for word in words:
        if '\u4e00'<=word<='\u9fa5': #判斷檔案類型輸入的是否是中文
            chinesetoE=True
            vText="中文-->英文" #修改标簽内容
        elif word.isalpha():
            englishtoC=True
            vText="英文-->中文"

        list_trans=my_translate(word) #調用方法獲得網站傳回因襲
        translate_result=get_result(list_trans) #解析傳回資訊,得到翻譯結果
        output_text.insert(INSERT,translate_result+'\n')
    if chinesetoE and englishtoC:
        vText="混合"
    label_info.config(label_info,text=vText)

def restart(): #清除輸入輸出和标簽
    vText='自動檢測語言'
    label_info.config(label_info,text=vText)
    input_text.delete(1.0,END)
    output_text.delete(1.0,END)

#frame1=Frame(root)
label_info=Label(root,text="請輸入你想要翻譯的詞或句:",width="60")
label_info.pack(side="top")
input_text=Text(root,width=45,height=4)
input_text.pack()

#frame1.pack(fill = "y")

frame1=Frame(root)
translate_button=Button(frame1,text="翻譯",width=8,command=translate_func)
translate_button.grid(row=1,column=5,padx=5,pady=10)
close_button=Button(frame1,text="退出",width=8,command=sys.exit)
close_button.grid(row=1,column=7,padx=5,pady=10)
label_info=Label(frame1,text='自動檢測語言')
label_info.grid(row=1,column=0)
restart_button=Button(frame1,text="清除",width=8,command=restart)
restart_button.grid(row=1,column=6,padx=5,pady=10)
frame1.pack(side = "top")

output_text=Text(root,width=45,height=4)
output_text.pack()

root.mainloop()
           

更新内容

1.修改translate_func方法

def translate_func():
    output_text.delete(1.0,END) #清除翻譯結果
    global words
    words=input_text.get("0.0","end").split() #從輸入文本讀取要翻譯的内容
    print(words)
    if not words:
        tkinter.messagebox.showwarning('提示',"請輸入你想要翻譯的詞或句") #沒有輸入内容提示
        return None
    
    chinesetoE=False #中譯英标記
    englishtoC=False #英譯中标記
    for word in words:
        if '\u4e00'<=word<='\u9fa5': #判斷檔案類型輸入的是否是中文
            chinesetoE=True
            vText="中文-->英文" #修改标簽内容
        elif word.isalpha():
            englishtoC=True
            vText="英文-->中文"

        list_trans=my_translate(word) #調用方法獲得網站傳回因襲
        translate_result=get_result(list_trans) #解析傳回資訊,得到翻譯結果
        output_text.insert(INSERT,translate_result+'\n')
    if chinesetoE and englishtoC:
        vText="混合"
    label_info.config(label_info,text=vText)
           

此次修改可以輸入多個内容,并根據輸入内容判斷是中譯英還是英譯中

2.增加restart方法

def restart(): #清除輸入輸出和标簽
    vText='自動檢測語言'
    label_info.config(label_info,text=vText)
    input_text.delete(1.0,END)
    output_text.delete(1.0,END)
           

清除内容

3.增加标簽和清除按鈕

label_info=Label(frame1,text='自動檢測語言')
label_info.grid(row=1,column=0)
restart_button=Button(frame1,text="清除",width=8,command=restart)
restart_button.grid(row=1,column=6,padx=5,pady=10)
           
實作中英文對接翻譯小程式—最終版
實作中英文對接翻譯小程式—最終版
實作中英文對接翻譯小程式—最終版