網站首頁 編程語言 正文
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 更多功能,可以移步官網。
小魚就不過多的介紹了。
原文鏈接:https://blog.csdn.net/wuyoudeyuer/article/details/126024644
相關推薦
- 2022-06-01 ASP.Net?Core中的日志與分布式鏈路追蹤_實用技巧
- 2023-01-14 Linux命令行查看cpu(lm_sensors)和顯卡溫度(nvidia-smi)的操作方法_li
- 2023-02-09 C++命名空間?缺省參數?const總結?引用總結?內聯函數?auto關鍵字詳解_C 語言
- 2022-06-29 一文教會你使用Nginx訪問日志統計PV與UV_nginx
- 2022-12-01 RFO?SIG之openEuler?AWS?AMI?制作詳解_云其它
- 2022-10-08 ASP.NET堆和棧一之基本概念和值類型內存分配_實用技巧
- 2022-10-22 Go語言數據結構之單鏈表的實例詳解_Golang
- 2023-01-11 openCV-Python筆記之解讀圖像的讀取、顯示和保存問題_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支