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之入门(三)序列
May 25 Python
Python实现的快速排序算法详解
Aug 01 Python
python smtplib发送带附件邮件小程序
May 22 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
Feb 21 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
pytorch自定义二值化网络层方式
Jan 07 Python
深入理解python多线程编程
Apr 18 Python
利用Python实现模拟登录知乎
May 25 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
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Javascript中的相等与不等运算
2010/04/25 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python 通配符删除文件的实例
2018/04/24 Python
基于python实现百度翻译功能
2019/05/09 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
村捐赠仪式答谢词
2014/01/21 职场文书
《值日生》教学反思
2014/02/17 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
会计人员演讲稿
2014/09/11 职场文书
2014年采购工作总结
2014/11/20 职场文书
家长会欢迎词
2015/01/23 职场文书
工作证明书
2015/06/15 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书