我使用2个框架(A和B),我可以在两个框架之间进行切换,以使程序运行。 此前tkinter框架等待难题
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的理由是,如果我不这样做,我会得到与消息框出现在一个无限循环并结束。
'wait_window'不是用来像你使用它一样 - 它几乎只用于等待模态对话框。你为什么认为你需要调用'wait_window'?你能否给我们展示一个完整的工作示例,说明你在几行代码中要做什么? –