0

我正在使用 2 个帧(A 和 B)在它们之间切换以使我的程序运行。之前

while Conditions:
    self.frameA.wait_window() 

然后当我完成frameA时:

self.frameA.destroy()
self.frameB = FrameB(self)
self.frameB.wait_window()
#After I'm finished with B...
#Function that takes info from frames A and B to make the program run
self.frameB.destroy()
self.frameA = FrameA(self)

并在节目期间来回交替。但我开始认为销毁和重新初始化可以做得更好。现在,我使用 grid_forget() 为框架创建了一个函数,该函数类似于第二个 init。我现在的问题是,由于我没有破坏帧,因此 wait_window 永远不会中断,从而形成无限循环。我玩弄了合并 2 帧的想法,但这并不能解决我的 wait_window 问题。本质上,有没有办法让我的应用程序等待来自框架的输入,或者是回到原始方法的最佳解决方案?

while firstConditions():
    while secondConditions():
        self.play()
    #Other code after secondConditions is false

def play(self):
    w = messagebox.askyesno(message='Make changes?', parent=self)
    if w:
        #Deals with making changes
    self.frameA.wait_window()

然后frameA中的一个按钮将导致frameB被创建

def makeFrameB(self):
    self.frameA.grid_forget()
    self.frameB.newInit()
    self.frameB.grid(row=3, column=0, columnspan=3)
    self.frameB.wait_window()

我使用 wait_window 的原因是,如果我不这样做,我会得到一个无限循环,消息框会一遍又一遍地出现。

4

1 回答 1

0

编辑提出问题的代码后,我不需要使用 wait_window 来解决我的问题。

于 2013-07-11T15:01:48.550 回答