2024-05-13 18:48:59 发布
网友
我想知道如何在wxpythonforpython3.4(Phoenix版本3.0.3)中对功能区按钮使用bind方法,因为我尝试过所有可能的菜单和按钮方法,但是每次都会出现如下错误:
文件“C:\Anaconda3\lib\site packages\wx\核心.py“,第1200行,在\u EvtHandler_Bind中 assert source is None或hasattr(source,'GetId') 断言错误
如果可能,请用简单的例子来帮助。提前谢谢。在
我用
import wx.ribbon as RB
而不是:
并绑定:
import wx import wx.ribbon as RB # Class code goes here... self.ribbon = RB.RibbonBar(self,wx.NewId()) self.page_home = RB.RibbonPage(self.ribbon, wx.NewId(), "Home") self.panel1 = RB.RibbonPanel(self.page_home, wx.ID_ANY, "Panel#1") self.button_bar1 = RB.RibbonButtonBar(self.panel1) bmp = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_OTHER, wx.Size(32, 32)) self.button_bar1_Exit = self.button_bar1.AddButton(wx.ID_ANY, "Exit", bmp, 'Close Window') self.button_bar1.Bind(RB.EVT_RIBBONBUTTONBAR_CLICKED, self.on_button_bar1) def on_button_bar1(self, event): button = event.GetButton() if button == self.button_bar1_Exit: self.Close()
我会留下我的答案,这对我是完美的,暂时不接受它,给一个更好的想法的机会,如果不接受,我会接受我的。在
如果为每个按钮分配一个ID而不是使用wx.ID\u任何. 它比在单个事件处理程序中有一个大的且不断增长的if/elif/else块更干净。在
import wx import wx.ribbon as RB BUTTON_EXIT_ID = wx.NewId() # Class code goes here... self.ribbon = RB.RibbonBar(self,wx.NewId()) self.page_home = RB.RibbonPage(self.ribbon, wx.NewId(), "Home") self.panel1 = RB.RibbonPanel(self.page_home, wx.ID_ANY, "Panel#1") self.button_bar1 = RB.RibbonButtonBar(self.panel1) bmp = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_OTHER, wx.Size(32, 32)) self.button_bar1_Exit = self.button_bar1.AddButton(BUTTON_EXIT_ID, "Exit", bmp, 'Close Window') self.button_bar1.Bind(RB.EVT_RIBBONBUTTONBAR_CLICKED, self.on_exit, id=BUTTON_EXIT_ID) def on_exit(self, event): self.Close()
我用
而不是:
^{pr2}$并绑定:
我会留下我的答案,这对我是完美的,暂时不接受它,给一个更好的想法的机会,如果不接受,我会接受我的。在
如果为每个按钮分配一个ID而不是使用wx.ID\u任何. 它比在单个事件处理程序中有一个大的且不断增长的if/elif/else块更干净。在
相关问题 更多 >
编程相关推荐