您能告诉我FindWindowByName的工作原理吗?我找不到实现它的任何示例。
我需要识别并打开一个开放框架以向其添加消息。我只能找到语法并且在理解它时遇到麻烦。引发未绑定的方法错误。我知道当使用错误的对象调用方法时会弹出此错误。我不能使用wx.Window对象调用此方法,因为这是首先要获取的内容。

最佳答案

主要要求是设置窗口的名称,方法是通过将name="foo"传递给其__init__或使用SetName("foo")方法来创建窗口。然后,您可以使用wx.FindWindowByName稍后获取该窗口:

>>> import wx
>>> frm = wx.Frame(None, title='FooBar', name='foobar')
>>> frm.Show()
True
>>>
>>> f = wx.FindWindowByName('busted')
>>> print f
None
>>> f = wx.FindWindowByName('foobar')
>>> print f
<wx._windows.Frame; proxy of <Swig Object of type 'wxFrame *' at 0x1003cdf30> >
>>> print frm
<wx._windows.Frame; proxy of <Swig Object of type 'wxFrame *' at 0x1003cdf30> >
>>>
>>> f == frm
True
>>> f is frm
True
>>>


除了上面使用的全局函数外,FindWindowByName类中还有一个名为wx.Window的静态方法,该方法具有相同的作用,并且在wxPython的早期版本中,存在一种非静态方法,该方法仅搜索以下对象的子代:窗户。因此,这可能就是您经历的困惑的来源。但是,在所有版本的wxPython中使用上面显示的全局函数应该是安全的,并且,如果您需要将搜索限制在包含层次结构的特定子树中,则可以将父窗口作为第二个参数传递。

07-27 18:02