python - 如何在继续使用 tkinter 之前等待模式窗口的响应?

标签 python tkinter modal-dialog

我有一个 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/

相关文章:

Python:快速子集化和循环数据帧

python - imaplib SSL 连接在关闭后卡在 CLOSE_WAIT

python - 在 Pandas DataFrame 之间匹配 ID 并应用函数

python - 无法引用类内的输入字段?

python - 如何在 Tkinter 中按下 Tab 键后捕获文本小部件的值?

python - 我如何更改 ttk.Entry 上的字体

javascript - 谷歌地图在 Bootstrap 中显示灰色内部模态

javascript - AngularJS 模式对话框未打开

python - 生成一个新的 2 阶 numpy 数组,用一定范围内的随机数填充每个元素

c# - Silverlight 将数组传递给网页的对话框参数