先上图
再上代码# -*- 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,大佬见怪莫怪



