You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:54:03