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 EOL while scanning string literal问题解决方法
Sep 18 Python
Python Queue模块详细介绍及实例
Dec 27 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
python matplotlib包图像配色方案分享
Mar 14 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
基于Python实现流星雨效果的绘制
Mar 18 Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 Python
Python字符串格式化方式
Apr 07 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
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
php GUID生成函数和类
2014/03/10 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python实现的矩阵类实例
2017/08/22 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
公立医院改革实施方案
2014/03/14 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
验房委托书
2014/08/30 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
缅怀先烈主题班会
2015/08/14 职场文书