Командная функция в tkinter не работает должным образом - PullRequest
0 голосов
/ 17 марта 2020

Я пытался реализовать свой первый gui в python с помощью tkinter. У меня есть эта функция:

def clicked():
    if(b2["text"]=="Start Recording"):
        b2["text"]="Stop Recording"
    elif(b2["text"]=="Stop Recording"):
        b2["text"]="Start Recording"
    stt.start_speech_to_text("prove.txt")

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

Я поместил эту функцию в кнопку следующим образом:

b2 = Button(root, text='Start Recording',command=clicked)

но когда я запускаю код и нажимаю кнопку, программа начинается с вызова функции start_speech_to_text, и только когда я прекращаю выполнение этой функции, кнопка меняет свою label.

Как я могу решить эту проблему? Спасибо

1 Ответ

2 голосов
/ 17 марта 2020

вам нужно добавить root.update_idletasks() или root.update() в вашу функцию start_speech_to_text. mainloop не обновляет / перерисовывает виджеты до тех пор, пока не получит обратно элемент управления от функции start_speech_to_text, и, следовательно, обновление в метке можно увидеть только после выполнения функции

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