我有一个 python 程序,在其中创建了一些自定义模式窗口,它们是顶级 tkinter 窗口的子窗口。下面是此类窗口的一个示例,但我还有其他更复杂的窗口。我想做,但无法确定如何做,就是在一个我称之为的地方等待响应。我尝试过类似下面的方法,但无法创建窗口
modal = ModalWindow(tk.Tk(), 'Title', 'Text')
while modal.choice is None:
pass
if modal.choice == 'Yes':
# Do Something
处理此类事情的适当方法是什么?
自定义模态窗口示例
class ModalWindow(object):
def __init__(self, root, title, text):
self.choice = None
# Setup the window
self.modalWindow = tk.Toplevel(root)
self.modalWindow.title(title)
self.modalWindow.resizable(False, False)
# Setup the widgets in the window
label = ttk.Label(self.modalWindow, text = text, font = '-size 10')
label.grid(row = 0, column = 0, columnspan = 2, padx = 2, pady = 2)
but = ttk.Button(self.modalWindow, text = 'Yes', command = self.choiceYes)
but.grid(row = 1, column = 0, sticky = 'nsew', padx = 2, pady = 5)
but = ttk.Button(self.modalWindow, text = 'No', command = self.choiceNo)
but.grid(row = 1, column = 1, sticky = 'nsew', padx = 2, pady = 5)
self.modalWindow.rowconfigure(1, minsize = 40)
def choiceYes(self):
self.choice = 'Yes'
self.modalWindow.destroy()
def choiceNo(self):
self.choice = 'No'
self.modalWindow.destroy()
最佳答案
经过进一步挖掘,我找到了自己的答案。以下是我想要的。函数 wait_window
接受 tkinter 窗口并暂停,直到该窗口关闭。
root = tk.Tk()
modal = ModalWindow(root, 'Title', 'Text')
root.wait_window(modal.modalWindow)
if modal.choice == 'Yes':
# Do Something
关于python - 如何在继续使用 tkinter 之前等待模式窗口的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678415/