微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有一种方法可以从wxPython中的事件中获取按钮或菜单项对象?

如何解决有没有一种方法可以从wxPython中的事件中获取按钮或菜单项对象?

我想做的是将一个功能绑定到多个按钮或菜单项,然后让该功能根据选择的菜单项做出决定。例如:

import wx

class TinkerFrame( wx.Frame ):
    
    def __init__(self):
    
        super().__init__(parent=None,title='SandBox')
        
        self.panel = wx.Panel(self)
        self.sizer = wx.BoxSizer(wx.HORIZONTAL)  
        
        self.buttons  = {}
        
        self.buttons['one'] = wx.Button(self.panel,label='Button 1')
        self.buttons['one'].Bind( wx.EVT_BUTTON,self.buttonpressed)
        
        self.buttons['two'] = wx.Button(self.panel,label='Button 2')
        self.buttons['two'].Bind( wx.EVT_BUTTON,self.buttonpressed) 
        
        self.buttons['three'] = wx.Button(self.panel,label='Button 3' )
        self.buttons['three'].Bind( wx.EVT_BUTTON,self.buttonpressed)

        for thisbutton in self.buttons:
            self.sizer.Add( self.buttons[thisbutton],wx.ALL | wx.CENTER,5 )
            
        self.panel.SetSizer(self.sizer)
        self.Show()
        
    def buttonpressed(self,event):
        
        thebuttonpressed = False # <---- THIS IS WHAT I'M LOOKING FOR
        
        if thebuttonpressed == self.buttons['one']:
            print( 'You pressed button 1' )
        elif thebuttonpressed == self.buttons['two']:
            print( 'You pressed button 2' )
        elif thebuttonpressed == self.buttons['three']:
            print( 'You pressed button 3' )
        else:
            print( 'I cannot figure out which button you pressed.' )


        
        
        
if __name__ == '__main__':
    app = wx.App()
    frame = TinkerFrame()
    app.MainLoop()

有没有办法做到这一点?我似乎无法从事件本身中提取任何信息,但是我显然不知道自己在做什么,所以我希望它在某个地方。

更新:将行更改为:

        thebuttonpressed = event.getEventObect()

导致:

AttributeError: 'CommandEvent' object has no attribute 'getEventObject'

解决方

        thebuttonpressed = event.GetEventObject()

如果您包含j ...,它 也有帮助。

解决方法

您可以使用wx.Event.GetEventObject(),注意方法名称中的大写字母G

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。