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调用短信猫控件实现发短信功能实例
Jul 04 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
Python的条件表达式和lambda表达式实例
Jan 31 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
解决python tkinter界面卡死的问题
Jul 17 Python
Python整数与Numpy数据溢出问题解决
Sep 11 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
Pandas实现一列数据分隔为两列
May 18 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 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中的strpos使用示例
2014/02/27 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
Python创建系统目录的方法
2015/03/11 Python
Python中的rfind()方法使用详解
2015/05/19 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
python字典操作实例详解
2017/11/16 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
董事长职责范文
2013/11/08 职场文书
数控专业应届生求职信
2013/11/27 职场文书
出纳员的岗位职责
2014/02/22 职场文书
简历里的自我评价范文
2014/02/24 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
施工员岗位职责
2015/02/10 职场文书