我不经常编码,因此很快就会忘记一些事情。然而,几年来我一直在修补(工作)python 和 wx.python,最后遇到了 AGW.AUI,并认为升级我的一些内部应用程序会很有用。然而,我现在有一个小问题。如何在通过 aui.AUIManager() 加载然后隐藏或显示的面板之间检测/传递事件?
我有一个使用 wxpython 的小应用程序:
class paneldescription(wx.Panel):
….panel layout with a list
self.grid.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
def OnItemSelected(self, evt)
class WorkingPanel(wx.Panel):
….panel layout of multiple wx.StaticText and wxTextCtrl
class MyFrame(wx.Frame):
b = workbook()
pnl1 = paneldescription()
pnl2 = WorkingPanel()
b.add pnl1
b.add pnl2
self.pnl1.grid.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
def OnItemSelection(self, evt):
get selected item from pnl1
set data in pnl2
这在 wx.Frame 中运行良好。现在我将其转换为 AUI 并添加更多面板。我该如何 1) 在 paneldescription 中检测 OnItemSelect 并 2) 将其传递给 WorkingPanel
使用 AUI 管理器?
在我第一次尝试时,我只是将上面的 Bind 语句复制到 AUI 代码中。它告诉我没有名为 pnl1 的项目。
然后我将其更改为:
self._mgr.GetPane("LocList").grid.Bind(wx.EVT_LIST_ITEM_SELECTED,
self.OnLocSelected)
LocList 由以下人员创建:
self._mgr.AddPane(self.CreateLocCtrl(), aui.AuiPaneInfo().Name("LocList").
Caption("Location List").CenterPane().CloseButton(False).MinimizeButton(False))
这返回
AuiPaneInfo has no object grid (grid is the name of the list in the initial panel.)
当我删除该引用时,它会返回
AuiPaneInfo has no object Bind
请帮忙。
谢谢
沃伦