首頁 > 軟體

基於Python3編寫一個GUI翻譯器

2022-08-04 14:00:19

1、引言

小屌絲:魚哥,你說百度翻譯的準確,還是google翻譯的準確?

小魚:自己翻譯的最準確。

小屌絲:你這… 擡槓。

小魚:沒有啊,英語自己就能翻譯,還需要啥翻譯軟體

小屌絲:如果是俄語,義大利語,西班牙語呢?

小魚:你這是…擡槓。

小屌絲:也沒有啊,我就是覺得網頁版翻譯器太麻煩了。

小魚:早說啊,我這有現成的翻譯器。

小屌絲:嗯?? 你下載的是什麼翻譯器?

小魚:你覺得我會下載嗎?

小屌絲:嗯,確實,那就是說,你自己寫了一個唄?

小魚:你答對了。

小屌絲:那趕緊share一下啊。

小魚:曬就曬,正好今天陽光明媚的。

2、程式碼實戰

2.1 思路

我們寫的GUI翻譯器,思路:

構建url地址;

構建語言種類;

GUI介面的搭建;

觸發GUI介面功能操作;

這裡提示一下,我們是通過 PySimpleGUI 來進行構建的。

小屌絲:什麼是PySimpleGUI呢?

小魚:一句話,PySimpleGUI 就是GUI工具包,用於建立GUI的。

小屌絲:果然是夠簡單,那看程式碼吧。

2.2 實戰

由於內容並不複雜,所以,直接上程式碼。

程式碼展示

#-*- coding: utf-8 -*-
# @Time   : 2022-07-27
# @Author : carl_DJ


import re
import html
from urllib import parse
import requests
import PySimpleGUI as sg

'構建爬蟲'
#url 為google自動翻譯地址
url = 'http://translate.google.cn/m?q=%s&tl=%s&sl=%s'

'構建翻譯函數'
#text:需要翻譯的內容, to_language:目標語言型別, text_language:當前語言型別。
def translate(text,to_language = 'en',text_language = 'auto'):
    text = parse.quote(text)
    url1 = url % (text,to_language,text_language)
    repsonse = requests.get(url1)
    data = repsonse.text
    print(f'輸出內容:{data}')

    expr = r'(?s)class="(?:t0|result-container)">(.*?)<'
    result = re.findall(expr,data)
    print(f'{result}')
    if (len(result) == 0):
        return ""
    return  html.unescape(result[0])

'GUI搭建'
#設定主題
sg.theme('bluepurple')
#設定字型
font = ("fangsong",12)
#選單欄設定
menu = [["Help",["About","Item","Author"]]]
#語言選擇(前端顯示),預設只有6種,可以自己新增
value = ['漢語','英語','日語','法語','俄語','自動']
# 語言選擇(後端執行時)
var = ['zh','en','ja','fr','ru','auto']
# 語言字典設定
dic = dict(zip(value,var))
#GUI佈局
layout = [[sg.Menu(menu,tearoff=False)],
         [sg.Text(text='輸入需要翻譯內容',size=(26,1)),
          sg.Text(text='將',size=(2,1),justification='center'),
          sg.Combo(values=value,key='from',size=(10,1)),
          sg.Text(text='翻譯為',size=(5,1),justification='center'),
          sg.Combo(values=value,key='to',size=(10,1))],
          [sg.Multiline(key='-IN-',size=(60,8),font=font)],
          [sg.Text(text='翻譯結果',size=(30,1),font=font)],
          [sg.Multiline(key='-OUT-',size=(60,8),font=font)],
          [sg.Text(text='',size=(36,1)),
           sg.Button("翻譯",size=(6,1)),
           sg.Button("清除",size=(6,1)),
           sg.Button("退出",size=(6,1))
           ]
          ]
# 設定視窗名稱,視窗佈局,以及圖示
window = sg.Window("桌面翻譯器",layout,icon='CT.ico')

'邏輯語句執行'
while True:
    #定義 事件 event, 返回值 values
    event,values = window.read()
    #點選「X」或者「退出」按鈕時才退出
    if event in (None,"退出"):
        break
    #點選 翻譯 按鈕
    if event == "翻譯":
        if values["to"] == '' or values["from"] =='':
            sg.Popup("請選擇語言後再重試")
        else:
            tar = translate(values["-IN-"],dic[values["to"]],dic[values["from"]])
            window["-OUT-"].Update(tar)
    #點選 清除 按鈕
    if event =="清除":
        window["-IN-"].update("")
        window["-OUT-"].update("")
    if event == "About":
        #Popup 提示彈窗,給出提示資訊
        sg.Popup("使用方法:",
                 "'翻譯'確認輸入,並輸出翻譯結果",
                 "'清除'清除已有輸入,清空翻譯的結果",
                 "'退出'取消,並退出App",
                 title='', font = font, auto_close = 1)
    if event == "Item":
        sg.Popup("翻譯型別:",
                 "'輸入型別' 輸入的語言型別",
                 "'輸出型別' 輸出的語言型別",
                 title = '', font = font, auto_close = 1)
    if event == "Author":
        sg.Popup("作者簡介:",
                 "姓名:XXXXXX",
                 "Wechat:XXXXXX",
                 "E-mail:XXXXXX@qq.com", title='', font=font, auto_close=1)
        window.close()

執行結果:

3、總結

看到這裡,今天的分享差不多就要結束了。

關於PySimpleGUI 的介紹,也就差不多了。

今天更多的是通過PySimpleGUI 來搞定翻譯器,既鍛鍊了擼碼能力,

有節省了每次百度翻譯/google翻譯花費的時間。

關於PySimpleGUI 更多功能,可以移步官網。

小魚就不過多的介紹了。

到此這篇關於基於Python3編寫一個GUI翻譯器的文章就介紹到這了,更多相關Python翻譯器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com