栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python GUI之tkinter 写了一个精简版的百度翻译小工具

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python GUI之tkinter 写了一个精简版的百度翻译小工具

先上图

再上代码
# -*- encoding: utf-8 -*-
"""
@File    :   test.py    

@Modify Time          @Version    @Description
------------          --------    -----------
2021/11/02 2:11 下午         1.0         None
"""

# import lib


# !/usr/bin/env python
# -*- coding: utf-8 -*-

from tkinter import *
import requests
import hashlib
import random
import json

LOG_LINE_NUM = 0


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

    # 设置窗口
    def set_init_window(self):
        self.init_window_name.title("百度翻译")  # 窗口名
        # 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.init_data_Text = Text(self.init_window_name, width=70, height=49)  # 原始数据录入框
        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.str_trans_to_EN_button = Button(self.init_window_name, text="中文转英文", fg='lightblue', bg="lightblue",
                                             width=10,
                                             command=self.str_trans_to_EN)  # 调用内部方法  加()为直接调用
        self.str_trans_to_EN_button.grid(row=1, column=11)

        # 按钮
        self.str_trans_to_ZH_button = Button(self.init_window_name, text="英文转中文", fg='lightblue', bg="lightblue",
                                             width=10,
                                             command=self.str_trans_to_ZH)  # 调用内部方法  加()为直接调用
        self.str_trans_to_ZH_button.grid(row=2, column=11)

    # 功能函数
    def str_trans_to_EN(self):
        q = self.init_data_Text.get(1.0, END).strip().replace("n", "").encode()

        # 输出到界面
        self.result_data_Text.delete(1.0, END)
        result = translate(q, 'zh', 'en')
        self.result_data_Text.insert(1.0, result)

    def str_trans_to_ZH(self):
        q = self.init_data_Text.get(1.0, END).strip().replace("n", "").encode()

        # 输出到界面
        self.result_data_Text.delete(1.0, END)

        result = translate(q, 'en', 'zh')
        self.result_data_Text.insert(1.0, result)


def translate(q, set_word_type, get_word_type):
    if not q.decode().strip():
        return ''

    url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
    appid = '***上百度翻译自己申请,一个用免费的就行***'
    mi = '***上百度翻译自己申请,一个用免费的就行***'
    rdm = random.randint(1000, 9999)

    my_md5 = hashlib.md5()

    sign_str = str(str(appid) + q.decode() + str(rdm) + str(mi))
    print('sign_str-----' + sign_str)
    my_md5.update(sign_str.encode(encoding='utf-8'))
    my_md5_digest = my_md5.hexdigest()

    data = {'from': set_word_type,
            'to': get_word_type,
            'q': q,
            'appid': appid,
            'salt': rdm,
            'sign': my_md5_digest}

    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
    }

    response = requests.post(url=url, data=data, headers=headers)
    result = response.text
    result_json = json.loads(result)
    """这里捕捉异常是因为点击过快,免费的翻译api只有1qps"""
    try:
        result = result_json.get("trans_result")[0].get("dst")
    except Exception:
        return ''

    print('result-----' + result)
    return result


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

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


gui_start()
最后要关注

 

 

注:0基础写Python,大佬见怪莫怪

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/423590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号