您将如何使用tkinter创建基本的翻译器?

2024-04-19 14:49:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我制作了“GUI”。我有一个下拉菜单,但不知道如何使它工作。我尝试使用开关盒,即:

def language(i):
switcher = {
             0 : 'german'
             1 : 'russian'
}
return switcher.get(i, "Invalid language")

在我的另一篇博文中,我提到了我是如何做到这一点的:

def rustrans():
    word = entry.get()
    translator = Translator(service_urls=["translate.google.com"])
    translation = translator.translate(word, dest = "ru")
    label = tk.Label(root, text = f"Russian text : {translation.text}", bg="yellow")
    label.grid(row=2,column=0)

我尝试使用if语句,如:

if language(1):
    btn = tk.Button(root, text="Translate", command=rustrans)
    btn.grid(row=1,column=2)

elif language(0):
...

我确实有我的标签、条目等,但当我尝试切换语言时(我有一个下拉列表,但不起作用,当我在其中更改语言并按下翻译按钮时,它仍然希望翻译俄语而不是德语,即。 当我从下拉列表中更改语言(我可以将它带回来,尽管我已经删除了它)并按translate时,它会翻译正确的语言,我应该如何做到这一点


Tags: text语言getdefroottranslationlanguagelabel
1条回答
网友
1楼 · 发布于 2024-04-19 14:49:46

问题是什么还不清楚。您只需要将一个变量与下拉列表相关联,然后在进行转换时获取值

例如,假设这些语言是在名为LANGUAGES的全局中定义的。字典的键将在UI中使用,值是传递给转换器的值

LANGUAGES={
    'German': 'de',
    'Russian': 'ru',
}

我们可以使用这些键填充组合框,然后使用组合框值获取要传递给转换器的值

class TranslatorUI:
    def __init__(self):
        ...
        self.translator = Translator(service_urls=["translate.google.com"]) 
        self.dest_var = tk.StringVar(value="German")

        self.dropdown = ttk.Combobox(
            self.root, textvariable=self.dest_var, 
                values=[str(x) for x in LANGUAGES.keys()]
        )
        self.word_entry = ttk.Entry(self.root)
        self.button = ttk.Button(self.root, text="Translate", command=self.translate)
        ...

    def translate(self):
        word = self.word_entry.get()
        language_name = self.dest_var.get()
        lang = LANGUAGES[language_name]
        self.translator.translate(word, lang)

相关问题 更多 >