前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >wxpython 编程触发菜单或按钮事件

wxpython 编程触发菜单或按钮事件

作者头像
黯然销魂掌
发布2018-09-27 11:10:41
2.4K0
发布2018-09-27 11:10:41
举报
文章被收录于专栏:python爬虫日记python爬虫日记

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

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

代码语言:javascript
复制
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 

以上。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-07-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档