Tkinter-为什么要调用我的python类?

Tkinter-为什么要调用我的python类?,python,python-3.x,class,tkinter,Python,Python 3.x,Class,Tkinter,有人能解释为什么程序运行时会打印“hello”吗?我本来只希望运行welcome\u框架,因为这是已提出的框架,但事实似乎并非如此 那么,为什么在我启动程序时所有的类都会立即运行,我如何才能阻止这种情况的发生呢 我想要的是在welcome\u框架中按下一个按钮,这会导致edit\u booking\u框架中的所有内容都运行 谢谢:) 那么,为什么在我启动程序时所有的类都会立即运行,我如何才能阻止这种情况的发生呢 这就是您复制的代码的设计目的。在该循环中,每个类都在程序的最开始处实例化: for

有人能解释为什么程序运行时会打印“hello”吗?我本来只希望运行
welcome\u框架
,因为这是已提出的框架,但事实似乎并非如此

那么,为什么在我启动程序时所有的类都会立即运行,我如何才能阻止这种情况的发生呢

我想要的是在
welcome\u框架
中按下一个按钮,这会导致
edit\u booking\u框架
中的所有内容都运行

谢谢:)

那么,为什么在我启动程序时所有的类都会立即运行,我如何才能阻止这种情况的发生呢

这就是您复制的代码的设计目的。在该循环中,每个类都在程序的最开始处实例化:

for F in (welcome_frame, edit_booking_frame):
    page_name = F.__name__
    frame = F(parent=container, controller=self)
    self.frames[page_name] = frame
F(父类=容器,控制器=自身)
实例化该类。第一次通过循环
F
welcome\u frame
,下一次是
edit\u booking\u frame

循环与执行此操作相同:

self.frames['welcome_frame'] = welcome_frame(parent=controller, controller_self)
self.frames['edit_booking_frame'] = edit_booking_frame(parent=controller, controller=self)
我想要的是在welcome_框内按下一个按钮,这会导致edit_booking_框内的所有内容都运行

如果是这种情况,可能不应该使用此代码。这段代码被明确地设计为在前面创建所有帧

还有其他选择,并且有一些方法可以安排代码在显示框架后运行。我建议查看此问题答案中的所有答案和链接:


在for循环中,您有以下行:
F(父项=容器,控制器=自身)
F
编辑预订帧时,它调用
edit\u booking\u frame
的构造函数,该构造函数是它的
\uuu init\uuu
方法。在代码中,所有帧都将被初始化,但屏幕上只显示顶部帧。通过在
show_frame
方法中调用
.tkraise()
,您可以将该框架设置为顶部框架,以便其他框架位于下方。好的,我已经查看了所有答案和链接,似乎创建自定义事件将是处理此问题的最佳方式…仍然不完全确定如何处理此问题。我已经在
show\u frame
函数中添加了一个自定义事件,但不太确定从那里开始。定制活动是最好的主意还是我把事情复杂化了?我正在考虑完全不上课。
self.frames['welcome_frame'] = welcome_frame(parent=controller, controller_self)
self.frames['edit_booking_frame'] = edit_booking_frame(parent=controller, controller=self)