帧Tkinter.Frame的回调方法

时间:2017-09-21 09:07:52

标签: python tkinter

我正在使用Python 2.7 Tkinter中的桌面应用程序。我的应用程序有几个屏幕,我已经使用单帧为每个屏幕和一个主控制器实现了它们。控制器类具有以下方法,用于将框架置于顶部。

def show_frame(self, pageName):
    """
    Show a frame for the given page name.
    """
    frame = self.frames[pageName]
    frame.tkraise()

其中self.frames的initialised帧对象以pageName为键。

我可以在Tkinter.Frame上实现任何回调方法吗?如果一个屏幕上有任何更改,只要显示该屏幕,就可以在另一个屏幕上更新?

以上代码段的参考: How to change and show a new window in Tkinter

1 个答案:

答案 0 :(得分:1)

所以我意识到,我可以自己编写一个回调函数并在我调用tkraise的任何地方调用它,但是对没有实现回调方法的类进行检查。

def show_frame(self, pageName):
    """
    Show a frame for the given page name.
    """
    frame = self.frames[pageName]
    frame.tkraise()

    # only call 'on_tkraise' method, if the object's class has implemented it
    # can be used for updating UI
    if hasattr(frame, 'on_tkraise') and callable(getattr(frame, 'on_tkraise')) :
        frame.on_tkraise()