zoukankan      html  css  js  c++  java
  • 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 

    以上。

  • 相关阅读:
    程序员之歌 littleflute原创
    生成网站缩略图的小工具,:)
    十个习惯
    用反编译工具透析.Net页面生成本质
    装箱拆箱陷阱揭秘
    图片上传——用一般处理程序实现
    Web.config文件中常用的配置节点
    初识三层,请多指教
    匪夷所思的题目,心理慢慢引导
    权重分配方法
  • 原文地址:https://www.cnblogs.com/zhongtang/p/5688391.html
Copyright © 2011-2022 走看看