Ожидаемый предполагаемый блок (Python TK библиотека) - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь сделать простой переводчик. Важная часть кода:

tkVar = tk.StringVar(root)
choices = { "de":'German', "ru":'Russian', "en":'English', "hr":'Croatian', "cz":'Czech', "sv":'Swedish', "pl":'Polish' }
tkVar.set('de')
popUpMenu = tk.OptionMenu(mainframe, tkVar, *choices)
tk.Label(mainframe, text="Choose a language").grid(row=1,column=1)
popUpMenu.grid(row=2,column=1)

Мои функции (пока только перевод на русский и немецкий):

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

def detrans():
    word = entry.get()
    translator = Translator(service_urls=["translate.google.com"])
    translation2=translator.translate(word, dest="de")
    label2 = tk.Label(root, text=f"Translated in German : {translation2.text}", bg = "yellow")
    label2.grid(row=2,column=0)

Моя попытка перевести с английского sh на указанный язык, используя выражение if:

if choices["de"]:
    button = tk.Button(root, text="Translate", command=detrans)
    button.grid(row=1,column=2)

if choices["ru"]:
button1 = tk.Button(root, text="Translate", command=rustrans)
button1.grid(row=1,column=2)

В возвышенном тексте говорится, что ошибка в строке 46 или

button1 = tk.Button(root, text="Translate", command=rustrans)

Я здесь, потому что хочу выяснить, что мне делать в случае " Ожидается, что "намеченный блок" происходит.

РЕДАКТИРОВАТЬ: работает БЕЗ ВСЕГО, если выберет ["ru"] часть кода (комментируя его), программа работает просто отлично.

Ответы [ 2 ]

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

Проблема в вашем коде здесь:

if choices["ru"]:
button1 = tk.Button(root, text="Translate", command=rustrans)
button1.grid(row=1,column=2)

Вы должны переписать это так:

if choices["ru"]: # indent the code after the colon
    button1 = tk.Button(root, text="Translate", command=rustrans)
    button1.grid(row=1,column=2)
2 голосов
/ 14 января 2020

Вы просто забыли поставить отступ в начале обеих строк после выбора if ['ru']:

if choices["de"]:
    button = tk.Button(root, text="Translate", command=detrans)
    button.grid(row=1,column=2)

if choices["ru"]:
    button1 = tk.Button(root, text="Translate", command=rustrans)
    button1.grid(row=1,column=2)

Тогда это должно работать для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...