python调用菜单响应事件_[Python] wxpython 编程触发菜单或按钮事件

最近逐步熟悉wxpython,编写了几个小小功能的GUI程序,GUI中免不了会有在代码中触发控件事件的业务需求。在其他Gui界面的语言中有postevent、triggerevent 调用事件名称的函数,非常方便。

在wxpython里如何解决呢,上一段简单的代码。

class frame(wx.Frame):

ID_Help = wx.NewId()

def __init__(self, frame):

super(TaskBarIcon, self).__init__()

self.frame = frame

self.Bind(wx.EVT_MENU, self.OnHelp, id=self.ID_Help)

……

self.Bind(wx.EVT_CHECKBOX, self.OnShowDetail, self.cbxShowDetail)

self.Bind(wx.EVT_BUTTON, self.OnPrint, self.btnPrint)

……

def CreatePopupMenu(self):

menu = wx.Menu()

menu.Append(self.ID_Help,u'帮助&F1')

return menu

……

def ShowMain():

#触发菜单事件,id=self.ID_Help

iRet = wx.PostEvent(self,wx.CommandEvent(wx.EVT_MENU.typeId,self.ID_Help))

return iRet

def PrintMain():

#触发按钮事件,id=self.btnPrint.GetId()

#相当于执行了btnPrint所绑定的事件OnPrint()事件。

iRet = wx.PostEvent(self,wx.CommandEvent(wx.EVT_BUTTON.typeId,self.btnPrint.GetId()))

return iRet

def PrintMain():

#触发checkbox事件,id=self.cbxShowDetail.GetId()

#相当于执行了cbxShowDetail所绑定的事件OnShowDetail()事件。

self.cbxShowDetail.SetValue(True)

iRet = wx.PostEvent(self,wx.CommandEvent(wx.EVT_CHECKBOX.typeId,self.cbxShowDetail.GetId()))

return iRet

解释:

wx.PostEvent(self ,wx.CommandEvent(wx.EVT_CHECKBOX.typeId,self.cbxShowDetail.GetId()))

参数1 ,self代表处理postevent的窗口句柄。

参数2 ,event = wx.CommandEvent( eventtype, eventid)

eventtype 分别为wx.evt_menu ,wx.evt_button, wx.evt_checkboxx。

eventid 为事件的所绑定的控件id

以上。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值