如何将事件绑定到wxpython-phoenix中的功能区按钮



我想知道如何使用python 3.4(凤凰版本3.0.3)中的功能区按钮使用绑定方法,因为我尝试了所有可能与菜单和按钮一起使用的方法,但是始终使用我有一个错误看起来:

文件" c: anaconda3 lib lib site-packages wx core.py",第1200行,在_evthandler_bind中 断言源无或hasattr(源,'getID')断言

如果可能的话,请帮助简单示例。预先感谢。

我通过使用

找到了解决我问题的解决方案
import wx.ribbon as RB

而不是:

import wx.lib.agw.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_any,则可以将特定事件处理程序绑定到每个按钮。它比单个事件处理程序中的/elif/block的大且增长更干净。

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()

相关内容

  • 没有找到相关文章

最新更新