У меня есть интерфейс с двумя кнопками. Они имеют взаимоисключающие действия и генерируются при выполнении определенного условия в фоновом режиме для -l oop. Пользователь должен щелкнуть один из них, а затем кнопки должны исчезнуть. Они могут появиться снова, когда условие выполнено снова в фоновом режиме для -l oop. Вы можете подумать о кнопках создания типа «выбрать точно один из этих ...». For-l oop в фоновом режиме должен ждать ввода пользователя. Поэтому я использую метод wait_variable
на кнопках.
Чтобы смоделировать это, я написал следующее MWE:
import tkinter as tk
root = tk.Tk()
a, b = 0, 0
var = tk.IntVar()
def Aaction():
global a
a += 1
var.set(var.get()+1)
b1.destroy()
b2.destroy()
def Baction():
global b
b += 1
var.set(var.get()+1)
b1.destroy()
b2.destroy()
# this happens before A and B are displayed
print('some code executing')
b1 = tk.Button(root, text='A', command=Aaction)
b1.pack()
b2 = tk.Button(root, text='B', command=Baction)
b2.pack()
b1.wait_variable(var)
print('b1 finsihed waiting')
b2.wait_variable(var) # what happens to this? `b2` is deleted when `b` is clicked. so...?
print('b2 finsihed waiting') # this is never reached
# this should happen after either A or B was clicked
print('some more code executing')
root.mainloop()
Этот код не соответствует тому, что я намереваюсь, но это абстракция как я пытался решить это в моем коде. Мой вопрос: как вы решаете это правильно?