英汉互译小程序
英汉互译小程序
1.原理和功能
该小程序基于python爬虫改编的可视化程序。
主要利用了requests,thinker,pyttsx3,hashlib 实现的主要功能有英汉互译,计算哈希,播放单词的读音等简单功能
2.基本思路
在网页打开百度翻译的在线翻译,通过输入post请求关键字,得到翻译结果是一串json数据。
import requests
post_url = 'https://fanyi.baidu.com/sug'
word = input('请录入一个单词:')
data = {'kw': word}
# 进行UA伪装
headers = {'输入自己的请求头'}
resp = requests.post(url=post_url, data=data, headers=headers)
# 获取响应数据:json()方法返回的是ojb()
dic_ojb = resp.json()
# print(dic_ojb)
data = dic_ojb
print("翻译结果:")
for item in data['data']:
print(item['v'])
{'errno': 0, 'data': [{'k': 'word', 'v': 'n. 单词; 话语; 诺言; 消息 vt. 措辞,用词; 用言语表达 vi. 讲话'},
{'k': 'Word', 'v': '微软公司生产的文字处理软件。; [人名] 沃德'},
{'k': 'words', 'v': 'n. 字( word的名词复数 ); (说的)话; 诺言; 口令'},
{'k': 'Words', 'v': '[医]言语'},
{'k': 'WORDS', 'v': 'abbr. Western Operational Research Discussion Soci'}]}
然后通过json数据的读取格式得到翻译结果
1 data=dic_ojb 2 print("翻译结果:") 3 for item in data['data']: 4 print(item['v'])

接下来我们可以去创建一个窗体,在输入框中输入单词,在文本框中输出翻译结果。
1 import tkinter as tk 2 window=tk.Tk() 3 window.geometry("400x420") 4 window.mainloop()
可以得到一个窗体

通过个性化设置,设置窗体的基本设置。
实现输入框,文本框,按钮
1 window = tk.Tk() 2 window.title("翻译工具") 3 window.geometry("400x420") 4 # 创建label,提示用户 5 label = tk.Label(window, text="输入要翻译的单词:") 6 label.pack() 7 # 创建文本框,让用户何以在文本框内进行输入 8 entry = tk.Entry(window) 9 entry.pack() 10 # 创建按钮 11 button_frame = tk.Frame(window) 12 button_frame.pack() 13 # 创建翻译按钮,设置按钮的基本情况 14 translate_button = tk.Button(button_frame, text="英译汉", command=translate_word_thread) 15 translate_button.pack(side=tk.LEFT) 16 # 同上 17 reverse_translate_button = tk.Button(button_frame, text="汉译英", command=translate_word_thread) 18 reverse_translate_button.pack(side=tk.LEFT) 19 # 播放按钮 20 speak_button = tk.Button(button_frame, text="▶", command=speak_word_thread) 21 speak_button.configure(background="#FF0001", foreground="#FFFFFF") 22 speak_button.pack(side=tk.LEFT) 23 # 重置按钮 24 reset_button = tk.Button(button_frame, text="重置", command=reset) 25 reset_button.configure(background="#FF0000", foreground="#FFFFFF") 26 reset_button.pack(side=tk.LEFT) 27 28 result_text = tk.Text(window, state=tk.DISABLED) 29 result_text.pack() 30 31 set_style() 32 window.mainloop()
想要让它读取,调用pyttsx3,实现文本转语音的功能
1 word = entry.get() 2 engine = pyttsx3.init() 3 engine.setProperty("rate", 100) 4 engine.setProperty("volume", 0.9) 5 engine.say(word) 6 engine.runAndWait()
最后添加计算哈希的模块
hashed_word = hashlib.sha256(word.encode()).hexdigest()
全部代码如下:
import tkinter as tk import hashlib import requests import pyttsx3 from tkinter import ttk from ttkthemes import ThemedStyle from threading import Thread def baidu_translate(word): post_url = 'https://fanyi.baidu.com/sug' data = {'kw': word} headers = {放入自己从网页中中的请求头} resp = requests.post(url=post_url, data=data, headers=headers) dic_obj = resp.json() data = dic_obj translations = [item['v'] for item in data['data']] return translations #定义文本框内容 def translate_word(): word = entry.get() translations = baidu_translate(word) hashed_word = hashlib.sha256(word.encode()).hexdigest() result_text.config(state=tk.NORMAL) result_text.delete('1.0', tk.END) result_text.insert(tk.END, f"原文: {word}\n") result_text.insert(tk.END, f"哈希值: {hashed_word}\n") result_text.insert(tk.END, "翻译结果:\n") if translations: for translation in translations: result_text.insert(tk.END, f"- {translation}\n") else: result_text.insert(tk.END, "没有翻译结果\n") result_text.config(state=tk.DISABLED) # 定义播放助手 def speak_word(): word = entry.get() engine = pyttsx3.init() engine.setProperty("rate", 100) engine.setProperty("volume", 0.9) engine.say(word) engine.runAndWait() # 定义重置按钮 def reset(): entry.delete(0, tk.END) result_text.config(state=tk.NORMAL) result_text.delete('1.0', tk.END) result_text.config(state=tk.DISABLED) def set_style(): style = ThemedStyle(window) style.set_theme("arc") style.configure("TLabel", font=("Arial", 12), foreground="#333333", background="#FDFDFD") style.configure("TEntry", font=("Arial", 12)) style.configure("TButton", font=("Arial", 12), background="#4CAF50", foreground="white", borderwidth=0, relief="raised", padding=10) def create_window(): global window, entry, result_text window = tk.Tk() window.title("翻译工具") window.geometry("400x420") # 创建label,提示用户 label = tk.Label(window, text="输入要翻译的单词:") label.pack() # 创建文本框,让用户何以在文本框内进行输入 entry = tk.Entry(window) entry.pack() # 创建按钮 button_frame = tk.Frame(window) button_frame.pack() # 创建翻译按钮,设置按钮的基本情况 translate_button = tk.Button(button_frame, text="英译汉", command=translate_word_thread) translate_button.pack(side=tk.LEFT) # 同上 reverse_translate_button = tk.Button(button_frame, text="汉译英", command=translate_word_thread) reverse_translate_button.pack(side=tk.LEFT) # 播放按钮 speak_button = tk.Button(button_frame, text="▶", command=speak_word_thread) speak_button.configure(background="#FF0001", foreground="#FFFFFF") speak_button.pack(side=tk.LEFT) # 重置按钮 reset_button = tk.Button(button_frame, text="重置", command=reset) reset_button.configure(background="#FF0000", foreground="#FFFFFF") reset_button.pack(side=tk.LEFT) result_text = tk.Text(window, state=tk.DISABLED) result_text.pack() set_style() window.mainloop() def translate_word_thread(): t = Thread(target=translate_word) t.start() def speak_word_thread(): t = Thread(target=speak_word) t.start() create_window()
运行结果如下:

本文来自博客园,作者:PaleKernel,转载请注明原文链接:https://www.cnblogs.com/PaleKernel/articles/17528133.html

浙公网安备 33010602011771号