python用tkinter实现一个gui的翻译工具


Posted in Python onOctober 26, 2020
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from tkinter import *
import hashlib
import time
import json
import requests
import random
LOG_LINE_NUM = 0

class MY_GUI():
  def __init__(self,init_window_name):
    self.init_window_name = init_window_name
    self.headers = {

      'User-Agent': '自己的User-Agent',

      'Referer': 'http://fanyi.youdao.com/',

      'Cookie': '自己的Cookie'

    }

    self.data = {

      'i': None,

      'from': 'AUTO',

      'to': 'AUTO',

      'smartresult': 'dict',

      'client': 'fanyideskweb',

      'salt': None,

      'sign': None,

      'ts': None,

      'bv': None,

      'doctype': 'json',

      'version': '2.1',

      'keyfrom': 'fanyi.web',

      'action': 'FY_BY_REALTlME'

    }

    self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'


  #设置窗口
  def set_init_window(self):
    self.init_window_name.title("翻译工具_v1.0")      #窗口名
    #self.init_window_name.geometry('320x160+10+10')             #290 160为窗口大小,+10 +10 定义窗口弹出时的默认展示位置
    self.init_window_name.geometry('1068x681+10+10')
    #self.init_window_name["bg"] = "pink"                  #窗口背景色,其他背景色见:blog.csdn.net/chl0000/article/details/7657887
    #self.init_window_name.attributes("-alpha",0.9)             #虚化,值越小虚化程度越高
    #标签
    self.init_data_label = Label(self.init_window_name, text="待处理数据")
    self.init_data_label.grid(row=0, column=0)
    self.result_data_label = Label(self.init_window_name, text="输出结果")
    self.result_data_label.grid(row=0, column=12)
    self.log_label = Label(self.init_window_name, text="日志")
    self.log_label.grid(row=12, column=0)
    #文本框
    self.init_data_Text = Text(self.init_window_name, width=67, height=35) #原始数据录入框
    self.init_data_Text.grid(row=1, column=0, rowspan=10, columnspan=10)
    self.result_data_Text = Text(self.init_window_name, width=70, height=49) #处理结果展示
    self.result_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10)
    self.log_data_Text = Text(self.init_window_name, width=66, height=9) # 日志框
    self.log_data_Text.grid(row=13, column=0, columnspan=10)
    #按钮
    self.str_trans_to_md5_button = Button(self.init_window_name, text="转换", bg="lightblue", width=10,command=self.str_trans) # 调用内部方法 加()为直接调用
    self.str_trans_to_md5_button.grid(row=1, column=11)


  #功能函数
  def str_trans(self):
    word = self.init_data_Text.get(1.0,END).strip().replace("\n","")
    #print("src =",word)
    if word:
      try:
        ts = str(int(time.time() * 10000))

        salt = str(int(time.time() * 10000) + random.random() * 10 + 10)

        sign = 'fanyideskweb' + word + salt + ']BjuETDhU)zqSxf-=B#7m'

        sign = hashlib.md5(sign.encode('utf-8')).hexdigest()

        bv = '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'

        bv = hashlib.md5(bv.encode('utf-8')).hexdigest()

        self.data['i'] = word

        self.data['salt'] = salt

        self.data['sign'] = sign

        self.data['ts'] = ts

        self.data['bv'] = bv

        re = requests.post(self.url, headers=self.headers, data=self.data)
        jieguo = re.json()['translateResult'][0][0].get('tgt')
        #print(jieguo)
        #输出到界面
        self.result_data_Text.delete(1.0,END)
        self.result_data_Text.insert(1.0,jieguo)
        self.write_log_to_Text("INFO:翻译 success")
      except:
        self.result_data_Text.delete(1.0,END)
        self.result_data_Text.insert(1.0,"翻译失败")
    else:
      self.write_log_to_Text("ERROR:str_trans failed")


  #获取当前时间
  def get_current_time(self):
    current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    return current_time


  #日志动态打印
  def write_log_to_Text(self,logmsg):
    global LOG_LINE_NUM
    current_time = self.get_current_time()
    logmsg_in = str(current_time) +" " + str(logmsg) + "\n"   #换行
    if LOG_LINE_NUM <= 7:
      self.log_data_Text.insert(END, logmsg_in)
      LOG_LINE_NUM = LOG_LINE_NUM + 1
    else:
      self.log_data_Text.delete(1.0,2.0)
      self.log_data_Text.insert(END, logmsg_in)


def gui_start():
  init_window = Tk()       #实例化出一个父窗口
  ZMJ_PORTAL = MY_GUI(init_window)
  # 设置根窗口默认属性
  ZMJ_PORTAL.set_init_window()

  init_window.mainloop()     #父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示


gui_start()

运行效果:

python用tkinter实现一个gui的翻译工具

自己可以用pyinstaller 打包成 exe随时可以用。

python用tkinter实现一个gui的翻译工具

省去了再打开网页去搜 索翻译网页,下载翻译软件。

以上就是python用tkinter实现一个gui的翻译工具的详细内容,更多关于python 翻译工具的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python解析模块(ConfigParser)使用方法
Dec 10 Python
Python中使用 Selenium 实现网页截图实例
Jul 18 Python
详细介绍Ruby中的正则表达式
Apr 10 Python
python学生管理系统开发
Jan 30 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
python使用KNN算法识别手写数字
Apr 25 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
python随机打印成绩排名表
Jun 23 Python
Docker如何部署Python项目的实现详解
Oct 26 #Python
python Gabor滤波器讲解
Oct 26 #Python
详解基于python的图像Gabor变换及特征提取
Oct 26 #Python
多个版本的python共存时使用pip的正确做法
Oct 26 #Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 #Python
如何使用Pytorch搭建模型
Oct 26 #Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 #Python
You might like
一组PHP加密解密函数分享
2014/06/05 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
php实现的双向队列类实例
2014/09/24 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
python实现哈希表
2014/02/07 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python sys.argv[]用法实例详解
2018/05/25 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
利用Python计算KS的实例详解
2020/03/03 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
西部世纪面试题
2014/12/05 面试题
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
教师自我反思材料
2014/02/14 职场文书
什么是就业协议书
2014/04/17 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
企业标语口号
2014/06/10 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
经理岗位职责
2015/02/02 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers