Python Tkinter谷歌翻译工具实现输入文本后自动翻译方案咨询
Tkinter谷歌翻译工具自动翻译实现方案
实现思路
- 给输入文本框绑定按键释放事件,捕获用户输入动作
- 加入防抖逻辑:输入过程中不立即发起翻译请求,等用户停止输入500毫秒后再执行翻译,减少不必要的接口请求,避免触发谷歌翻译限流
- 调整翻译函数逻辑,每次翻译前先清空输出框旧内容,避免结果叠加
代码修改说明
你只需要在原有代码基础上增加防抖变量、事件绑定逻辑,调整翻译函数即可,完整可运行代码如下:
import tkinter as tk from tkinter import Button, Frame, font from tkinter.constants import BOTTOM, END from typing import Text import googletrans from googletrans import Translator # 全局初始化翻译器,避免每次翻译重复创建实例 translator = Translator() # 防抖定时器变量 translation_timer = None root = tk.Tk() root.geometry("720x900") root.title("google translator") title1 = tk.Label( root, text="Google Translator", font=('arial',20) ) title1.pack(pady=5) box = tk.Text( root, width=55, height=15, font=('Roboto',14) ) box.pack(pady=10) def tran(): input1 = box.get("1.0","end").strip() # 输入为空直接清空输出,不发起请求 if not input1: box1.delete("1.0", "end") return a = translator.translate(input1, src='en', dest='vi') b = a.text # 先清空旧输出再插入新结果 box1.delete("1.0", "end") box1.insert(END, b) # 防抖处理函数 def delayed_translate(event): global translation_timer # 取消上一个未执行的翻译任务 if translation_timer: root.after_cancel(translation_timer) # 500ms后执行翻译,可自行调整延迟时长 translation_timer = root.after(500, tran) # 给输入框绑定按键释放事件,触发防抖翻译 box.bind("<KeyRelease>", delayed_translate) def clear(): global translation_timer # 清空时取消待执行的翻译任务 if translation_timer: root.after_cancel(translation_timer) box.delete("1.0","end") box1.delete("1.0","end") Button_frame=tk.Frame(root).pack(side=BOTTOM) clear_button = tk.Button( Button_frame, text="clear content", font=('Arial',10,'bold'), bg = '#303030', fg="#FFFFFF", command=clear ) trans_button = tk.Button( Button_frame, text="translate", font=('Arial',10,'bold'), bg = 'yellow', fg="red", command=tran ) clear_button.place(x=290,y=410) trans_button.place(x= 150,y=410) box1 = tk.Text( root, width=55, height=15, font=('Roboto',14) ) box1.pack(pady=60) root.mainloop()
效果说明
修改后你在输入框输入英文,停止输入500毫秒就会自动翻译成越南语,原来的手动翻译按钮也可以正常使用,清空功能也做了适配不会残留待执行的翻译任务。
内容的提问来源于stack exchange,提问作者thangvc91
相关产品推荐
相关产品推荐

