基于Python3編寫(xiě)一個(gè)GUI翻譯器
1、引言
小屌絲:魚(yú)哥,你說(shuō)百度翻譯的準(zhǔn)確,還是google翻譯的準(zhǔn)確?
小魚(yú):自己翻譯的最準(zhǔn)確。
小屌絲:你這… 抬杠。
小魚(yú):沒(méi)有啊,英語(yǔ)自己就能翻譯,還需要啥翻譯軟件
小屌絲:如果是俄語(yǔ),意大利語(yǔ),西班牙語(yǔ)呢?
小魚(yú):你這是…抬杠。
小屌絲:也沒(méi)有啊,我就是覺(jué)得網(wǎng)頁(yè)版翻譯器太麻煩了。
小魚(yú):早說(shuō)啊,我這有現(xiàn)成的翻譯器。
小屌絲:嗯?? 你下載的是什么翻譯器?
小魚(yú):你覺(jué)得我會(huì)下載嗎?
小屌絲:嗯,確實(shí),那就是說(shuō),你自己寫(xiě)了一個(gè)唄?
小魚(yú):你答對(duì)了。
小屌絲:那趕緊share一下啊。
小魚(yú):曬就曬,正好今天陽(yáng)光明媚的。

2、代碼實(shí)戰(zhàn)
2.1 思路
我們寫(xiě)的GUI翻譯器,思路:
構(gòu)建url地址;
構(gòu)建語(yǔ)言種類(lèi);
GUI界面的搭建;
觸發(fā)GUI界面功能操作;
這里提示一下,我們是通過(guò) PySimpleGUI 來(lái)進(jìn)行構(gòu)建的。
小屌絲:什么是PySimpleGUI呢?
小魚(yú):一句話,PySimpleGUI 就是GUI工具包,用于創(chuàng)建GUI的。
小屌絲:果然是夠簡(jiǎn)單,那看代碼吧。
2.2 實(shí)戰(zhàn)
由于內(nèi)容并不復(fù)雜,所以,直接上代碼。
代碼展示
#-*- coding: utf-8 -*-
# @Time : 2022-07-27
# @Author : carl_DJ
import re
import html
from urllib import parse
import requests
import PySimpleGUI as sg
'構(gòu)建爬蟲(chóng)'
#url 為google自動(dòng)翻譯地址
url = 'http://translate.google.cn/m?q=%s&tl=%s&sl=%s'
'構(gòu)建翻譯函數(shù)'
#text:需要翻譯的內(nèi)容, to_language:目標(biāo)語(yǔ)言類(lèi)型, text_language:當(dāng)前語(yǔ)言類(lèi)型。
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'輸出內(nèi)容:{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搭建'
#設(shè)置主題
sg.theme('bluepurple')
#設(shè)置字體
font = ("fangsong",12)
#菜單欄設(shè)置
menu = [["Help",["About","Item","Author"]]]
#語(yǔ)言選擇(前端顯示),默認(rèn)只有6種,可以自己添加
value = ['漢語(yǔ)','英語(yǔ)','日語(yǔ)','法語(yǔ)','俄語(yǔ)','自動(dòng)']
# 語(yǔ)言選擇(后端執(zhí)行時(shí))
var = ['zh','en','ja','fr','ru','auto']
# 語(yǔ)言字典配置
dic = dict(zip(value,var))
#GUI布局
layout = [[sg.Menu(menu,tearoff=False)],
[sg.Text(text='輸入需要翻譯內(nèi)容',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='翻譯結(jié)果',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))
]
]
# 設(shè)置窗口名稱,窗口布局,以及圖標(biāo)
window = sg.Window("桌面翻譯器",layout,icon='CT.ico')
'邏輯語(yǔ)句執(zhí)行'
while True:
#定義 事件 event, 返回值 values
event,values = window.read()
#點(diǎn)擊“X”或者“退出”按鈕時(shí)才退出
if event in (None,"退出"):
break
#點(diǎn)擊 翻譯 按鈕
if event == "翻譯":
if values["to"] == '' or values["from"] =='':
sg.Popup("請(qǐng)選擇語(yǔ)言后再重試")
else:
tar = translate(values["-IN-"],dic[values["to"]],dic[values["from"]])
window["-OUT-"].Update(tar)
#點(diǎn)擊 清除 按鈕
if event =="清除":
window["-IN-"].update("")
window["-OUT-"].update("")
if event == "About":
#Popup 提示彈窗,給出提示信息
sg.Popup("使用方法:",
"'翻譯'確認(rèn)輸入,并輸出翻譯結(jié)果",
"'清除'清除已有輸入,清空翻譯的結(jié)果",
"'退出'取消,并退出App",
title='', font = font, auto_close = 1)
if event == "Item":
sg.Popup("翻譯類(lèi)型:",
"'輸入類(lèi)型' 輸入的語(yǔ)言類(lèi)型",
"'輸出類(lèi)型' 輸出的語(yǔ)言類(lèi)型",
title = '', font = font, auto_close = 1)
if event == "Author":
sg.Popup("作者簡(jiǎn)介:",
"姓名:XXXXXX",
"Wechat:XXXXXX",
"E-mail:XXXXXX@qq.com", title='', font=font, auto_close=1)
window.close()
運(yùn)行結(jié)果:


3、總結(jié)
看到這里,今天的分享差不多就要結(jié)束了。
關(guān)于PySimpleGUI 的介紹,也就差不多了。
今天更多的是通過(guò)PySimpleGUI 來(lái)搞定翻譯器,既鍛煉了擼碼能力,
有節(jié)省了每次百度翻譯/google翻譯花費(fèi)的時(shí)間。
關(guān)于PySimpleGUI 更多功能,可以移步官網(wǎng)。
小魚(yú)就不過(guò)多的介紹了。
到此這篇關(guān)于基于Python3編寫(xiě)一個(gè)GUI翻譯器的文章就介紹到這了,更多相關(guān)Python翻譯器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python類(lèi)的動(dòng)態(tài)修改的實(shí)例方法
這篇文章主要介紹了Python類(lèi)的動(dòng)態(tài)修改的實(shí)例方法的相關(guān)資料,需要的朋友可以參考下2017-03-03
python實(shí)現(xiàn)的生成隨機(jī)迷宮算法核心代碼分享(含游戲完整代碼)
這篇文章主要介紹了python實(shí)現(xiàn)的隨機(jī)迷宮生成算法核心代碼分享,本文包含一個(gè)簡(jiǎn)單迷宮游戲完整代碼,需要的朋友可以參考下2014-07-07
Python批量上傳文件信息到服務(wù)器的實(shí)現(xiàn)示例
在進(jìn)行軟件測(cè)試的過(guò)程中,經(jīng)常會(huì)需要準(zhǔn)備一批數(shù)據(jù),本文主要介紹了Python批量上傳文件信息到服務(wù)器的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
用uWSGI和Nginx部署Flask項(xiàng)目的方法示例
這篇文章主要介紹了用uWSGI和Nginx部署Flask項(xiàng)目的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
python中可以發(fā)生異常自動(dòng)重試庫(kù)retrying
這篇文章主要介紹了python中可以發(fā)生異常自動(dòng)重試庫(kù)retrying,retrying是一個(gè)極簡(jiǎn)的使用Python編寫(xiě)的庫(kù),主題更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-06-06
Python破解BiliBili滑塊驗(yàn)證碼的思路詳解(完美避開(kāi)人機(jī)識(shí)別)
這篇文章主要介紹了Python破解BiliBili滑塊驗(yàn)證碼的思路,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02

