tkinter框架等待难题

时间:2013-07-06 00:45:28

标签: tkinter

我正在使用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的理由是,如果我不这样做,我会得到一个无限循环,消息框一遍又一遍地出现。

1 个答案:

答案 0 :(得分:0)

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