Если вы хотите, чтобы функция ожидала действия пользователя, вам нужно явно указать ей ждать.
Для этого у Tkinter есть три функции. Один из них - wait_window
, который будет ожидать разрушения окна. Один из них - wait_visibility
, который будет ожидать изменения видимости окна. Третий - wait_variable
, который ожидает установки определенной переменной tkinter.
Пока tkinter ожидает, он может обслуживать другие события.
В вашем случае решение можетВыглядите примерно так:
var = BooleanVar(value=False)
def do_something():
something()
var.set(True)
button_2 = Button(root, text="Do something else", command=do_something).pack()
print("waiting...")
root.wait_variable(var)
print("done waiting.")
Когда вы измените свой код, включив в него приведенный выше фрагмент, вы заметите, что "ожидание ..." будет напечатано на стандартный вывод, а затем ничего не будет напечатано доВы нажимаете кнопку «Сделать что-то еще», и something
возвращает, позволяя изменить переменную.