Как бы вы использовали tkinter для создания переводчика basi c? - PullRequest
0 голосов
/ 14 января 2020

Я сделал "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):
...

У меня есть свои ярлыки, entry et c, но когда я пытаюсь переключить язык (у меня был раскрывающийся список, но он не работал, когда я менял язык там и нажимал кнопка перевода, она по-прежнему предпочитает переводить русский вместо немецкого, т.е. как я должен сделать это, когда я меняю язык из выпадающего списка (я могу вернуть его обратно, хотя я его удалил) и нажимаю перевод, это переводит правильный язык?

1 Ответ

0 голосов
/ 14 января 2020

Не понятно, в чем проблема. Вам просто нужно связать переменную с выпадающим списком, а затем получить значение при выполнении перевода.

Например, предположим, что языки определены в глобальном имени LANGUAGES. Ключи словаря будут использоваться в пользовательском интерфейсе, а значения - это то, что передается переводчику.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...