WxPython 框架未捕获 EVT_SET_FOCUS

WxPython frame not catching EVT_SET_FOCUS

我在这里设置了一个框架,我需要知道主 gui 中的活动对话框,所以这是我想出的:

class PlotFrame ( wx.Frame ):

    def __init__( self, parent, title , dialog_id):
        wx.Frame.__init__(self, None, size=(500, 500), title=title)
        self.parent = parent
        self.dialog_id = dialog_id
        self.Bind(wx.EVT_SET_FOCUS, self.on_focus)

    def __del__( self ):
        pass


    def on_focus(self, event):
        print "Focus:", self.dialog_id
        self.parent.set_active_dialog(self.dialog_id)

这正是文档所说要做的,但是单击对话框时不会调用我的事件处理程序。 运行 在 Linux 中。帮助赞赏,谢谢

您通常不会将焦点设置在框架或面板上。相反,您可以将其设置为用户界面中的第一个子小部件。事实上,wxPython 通常会自动为你做这件事,这样如果你有一个按钮或文本框作为你的第一个控件,它通常会默认获得焦点。

我真的不明白将焦点设置到框架上有什么意义。如果您只想知道框架是否处于活动状态,那么您应该改为绑定到 wx.EVT_ACTIVATE