基于Python3编写一个GUI翻译器

作者:Carl_奕然 时间:2022-07-07 07:57:54 

1、引言

小 * 丝:鱼哥,你说百度翻译的准确,还是google翻译的准确?

小鱼:自己翻译的最准确。

小 * 丝:你这… 抬杠。

小鱼:没有啊,英语自己就能翻译,还需要啥翻译软件

小 * 丝:如果是俄语,意大利语,西班牙语呢?

小鱼:你这是…抬杠。

小 * 丝:也没有啊,我就是觉得网页版翻译器太麻烦了。

小鱼:早说啊,我这有现成的翻译器。

小 * 丝:嗯?? 你下载的是什么翻译器?

小鱼:你觉得我会下载吗?

小 * 丝:嗯,确实,那就是说,你自己写了一个呗?

小鱼:你答对了。

小 * 丝:那赶紧share一下啊。

小鱼:晒就晒,正好今天阳光明媚的。

基于Python3编写一个GUI翻译器

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()

运行结果:

基于Python3编写一个GUI翻译器

基于Python3编写一个GUI翻译器

3、总结

看到这里,今天的分享差不多就要结束了。

关于PySimpleGUI 的介绍,也就差不多了。

今天更多的是通过PySimpleGUI 来搞定翻译器,既锻炼了撸码能力,

有节省了每次百度翻译/google翻译花费的时间。

关于PySimpleGUI 更多功能,可以移步官网。

小鱼就不过多的介绍了。

来源:https://blog.csdn.net/wuyoudeyuer/article/details/126024644

标签:Python,翻译
0
投稿

猜你喜欢

  • Python遍历文件夹和读写文件的实现方法

    2023-07-08 06:02:56
  • vue实现移动端轻量日期组件不依赖第三方库的方法

    2024-05-29 22:29:03
  • 也谈用户体验

    2009-07-15 12:56:00
  • scrapy数据存储在mysql数据库的两种方式(同步和异步)

    2023-07-10 03:29:43
  • 实现一个获取元素样式的函数getStyle

    2009-02-10 10:37:00
  • python使用sessions模拟登录淘宝的方式

    2023-01-09 12:05:25
  • 500行代码使用python写个微信小游戏飞机大战游戏

    2023-01-16 06:58:09
  • MySQL 1303错误的解决方法(navicat)

    2024-01-25 21:24:42
  • 十分钟搞定pandas(入门教程)

    2023-08-09 01:00:15
  • Python实现根据日期获取当天凌晨时间戳的方法示例

    2023-08-04 14:16:46
  • sql2000各个版本区别总结第1/3页

    2024-01-15 10:09:42
  • Pycharm安装scrapy及初始化爬虫项目的完整步骤

    2023-04-03 10:49:43
  • Django零基础入门之运行Django版的hello world

    2022-11-10 02:44:58
  • 实现asp长文章自动分页插件

    2011-02-26 13:51:00
  • Active Server Pages 错误 ASP 0201 修复方法

    2011-03-06 10:41:00
  • SqlServer修改数据库文件及日志文件存放位置

    2024-01-15 15:17:22
  • windows 10 设定计划任务自动执行 python 脚本的方法

    2023-11-11 20:45:57
  • SQL点滴24 监测表的变化

    2011-09-30 11:38:41
  • Mysql数据库监听binlog的开启步骤

    2024-01-26 03:50:36
  • 使用SQL SERVER存储过程实现历史数据迁移方式

    2024-01-13 04:07:40
  • asp之家 网络编程 m.aspxhome.com