【问题标题】:Python - how to automatically translate after inputing the text in the input boxPython - 如何在输入框中输入文字后自动翻译
【发布时间】:2021-11-21 08:32:44
【问题描述】:

希望你们一切都好。 我正在尝试使用 python 进行编码以使谷歌进行翻译。它已经成功完成,但现在的一个挑战是我不想按下翻译按钮,我希望在输入字段中输入文本后自动按下翻译按钮?你能帮我建议一些想法吗?

我的代码如下:

import tkinter as tk
from tkinter import Button, Frame, font
from tkinter.constants import BOTTOM, END
from typing import Text
import googletrans
#print(googletrans.LANGUAGES)
root = tk.Tk()
from googletrans import Translator
# t = Translator()
# b = a.text
# print(b)
root.geometry("720x900")
root.title("google translator")

title1 = tk.Label(
    root,
    text="Google Translator",
    font=('arial',20)
)
# title2 = tk.Label(
#     root,
#     text="put what you need to translate to Vietnamese",
#     font=('Arial',15),
# )

title1.pack(pady=5)
# title2.pack(pady=5)
# box1 = Text(root, width=30,height=10, font=('arial',12))
box = tk.Text(
    root,
    width=55,
    height=15,
    font=('Roboto',14)
)
box.pack(pady=10)

def tran():
    input1 = box.get("1.0","end")
    t=Translator()
    print(input1)
    a = t.translate(input1,src='en',dest='vi')
    b = a.text
    box1.insert(END,b)
def clear():
    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)
# clear_button.pack(pady=5)
#clear_button.pack(pady=5)
box1 = tk.Text(
    root,
    width=55,
    height=15,
    font=('Roboto',14)
)
box1.pack(pady=60)
root.mainloop()

【问题讨论】:

标签: python tkinter


【解决方案1】:

您好,我认为您在这里需要的是使用.trace_add() 方法,这样您就可以触发一个事件,该事件是您的情况下的翻译方法,只要您在框中写入。

您需要将StringVar() 分配给两个文本变量。

接下来,您必须设置.trace_add ('w',tran)(其中“w”表示写入)

【讨论】:

  • 嗨 Dharman,请告诉我您是如何为输入框中的整个文本分配 myvar = stringvar() 的,我尝试使用以下代码进行测试,但似乎 myvar 没有保留输入文本框的任意值: def callback(var,indx,mode): myvar = box.get("1.0","end") print(myvar) myvar.trace_add('write',callback)
  • box 是一个 tk.text ,我还将 myvar = tk.Stringvar() 定义为全局变量。
  • 嘿@thangvc91 我认为这个网站可以帮助你link
  • 嗨兄弟,我已经提到了你上面提到的 trace_add 功能,但仍然不能应用于我的情况,我有 2 个文本框,1 个用于需要翻译的语言,另一个用于翻译,想知道我如何为他们分配与您提供的链接中的示例相同的变量。
猜你喜欢
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2022-01-23
  • 2019-12-06
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多