import tkinter as tk
import urllib.request
import urllib.parse
import json
from tkinter import *
# 定义翻译函数
def translate():
# 获取输入文本
text = input_text.get('1.0', 'end').strip()#strp()去除空格
# 判断文本是否为空
if not text:
output_text.delete('1.0', 'end')
return
"""这段代码是一个Python程序,主要是向百度翻译的API发送请求,并获取响应数据。具体意思如下:
1. 定义了一个变量url,存储了要访问的API地址。
2. 定义了一个变量data,存储了要发送的数据。其中,'kw'是API要求的参数名,text是要翻译的文本内容。
3. 对data进行编码,将其转换成二进制格式,以便于发送请求。
4. 定义了一个变量headers,存储了请求头信息。其中,'User-Agent'是告诉API这个请求是从什么设备、什么浏览器发出的。
5. 创建了一个Request对象req,将url、data和headers作为参数传递进去。
6. 使用urllib.request.urlopen()函数发送请求,并将响应数据存储在response变量中。
7. 读取响应数据,使用decode()函数将其从二进制格式转换成字符串格式,并存储在变量html中。"""
# 调用百度翻译API接口
url = 'https://fanyi.baidu.com/sug'
data = {'kw': text}
"""创建一个HTTP请求对象`req`,其中包括URL链接`url`、数据`data`和请求头`headers`。`headers`是一个字典,其中`User-Agent`键指定了请求的浏览器代理,这里使用的是Mozilla/5.0。这个请求对象可以被传递给urllib.request.urlopen()函数来发送请求并获取响应。"""
data = urllib.parse.urlencode(data).encode('utf-8')
headers = {'User-Agent': 'Mozilla/5.0'}
req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
# 解析返回的JSON数据
"""该代码先将一个名为html的JSON字符串解析为Python对象
然后从该对象中获取'data'键的值,该值应该是一个列表。接着,该代码从该列表中获取第一个元素
然后从该元素中获取'v'键的值,存储在名为result的变量中
因此,result变量是JSON数据中'data'列表的第一个元素的'v'键的值。"""
data = json.loads(html)
result = data['data'][0]['v']
# 输出翻译结果
output_text.delete('1.0', 'end')
output_text.insert('end', result)
#定义清空函数
def clear():
#删除文本内容
input_text.delete("1.0",tk.END)
output_text.delete("1.0",tk.END)
# 创建窗口
window = tk.Tk()
window.title('百度翻译')
window.geometry('800x400')
# 创建输入框和输出框
input_text = tk.Text(window, font=('Arial', 14), height=1,width=25)
lable=tk.Label(window,text="请输入中文单词")
input_text.pack(pady=10)
output_text = tk.Text(window, font=('Arial', 14), height=1,width=25)
lable1=tk.Label(window,text="翻译结果")
output_text.pack(pady=10)
lable.place(x=100,y=10)
lable1.place(x=125,y=60)
bm=PhotoImage(file=r"C:\Users\86135\Pictures\phonto\6af9e7ccd2094b8fadea2fa063c5692c (1).gif")
lab1=Label(window,image=bm,compound="center")
lab1.bm=bm
lab1.place(x=50 ,y=150)
f=Frame(window,height=200,width=200)
lab2=Label(f,text="欢迎使用百度翻译",font=14)
x=0
def foo():
global x
x=x+10
if x>200:
x=0
lab2.place(x=x,y=0)
f.after(500,foo)
f.pack()
f.after(500,foo)
# 创建翻译键
translate_button = tk.Button(window, text='翻译', font=('Arial', 14), command=translate)
translate_button.place(x=350,y=200)
#创建清空键
clear_button = tk.Button(window,text="清空",font=("Arial",14),command=clear)
clear_button.place(x=410,y=200)
# 运行窗口
window.mainloop()
这个代码是利用百度翻译的公共API接口,这个接口与需要申请的接口的区别是,这个接口的访问次数是有限制的,而自己申请的是没有任何限制
下面告诉大家如何注册百度翻译api接口的密钥
登录以上网站,点击右上方的注册即可
注册完后,鼠标移动到电话号码哪儿去
点击开发者信息
点开个人开发者——企业开发者要钱的,我这边不建议
注册完后,出现这个页面即成功
最后返回首页,点击个人开发者信息,就会出现
完美收工,下期见