范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

wxPython事件标识符

  实战wxPython系列-013
  在wxPython事件系统中,事件是通过标识来区分的,每个事件标识在其实就是一个独一无二的整数,常见的事件标识有窗口标识,标准标识以及定制事件标识等等。
  一、窗口标识符(Windows ids)
  在事件系统中,窗口标识符是唯一确定窗口标识的整数。有三种方法可以创建窗口标识符。让系统自动生成一个标志符;使用系统中定义的标志符;创建自己使用的标识符。wx.Button(parent, -1) wx.Button(parent, wx.ID_ANY)
  在上面的语句中,我们将标志符参数设置为-1或者wx.ID_ANY,则表示让wxPython系统为我们自动生成一个标志符。自动创建的标识符的值总是为负值,而用户自己指定的标志符则必须为正值。通常在我们不需要更改控件(widget)的状态时使用让系统自动生成一个标志符。比如,在应用程序生命周期内一直不需要更改的静态文本控件。但是,如果我们在需要获得控件的标志符的时候,可以使用方法GetId()来获得控件的标识符。
  下面的示例程序演示了如何让系统自动生成标志符,以及如何获得该标志符:#窗口标识演示 import wx  class SampleWindowsIds(wx.Frame):      def __init__(self, *args, **kw):         super(SampleWindowsIds, self).__init__(*args, **kw)          self.InitUi()      def InitUi(self):         panel = wx.Panel(self)         exitButton = wx.Button(panel, wx.ID_ANY, "退出", (10, 10))          self.Bind(wx.EVT_BUTTON, self.OnExit, id=exitButton.GetId())          self.SetTitle("实战wxPython: 自动分配标识")         self.Centre()      def OnExit(self, e):         self.Close()  def main():     app = wx.App()     sample = SampleWindowsIds(None)     sample.Show()     app.MainLoop()  if __name__ == "__main__":     main()
  在上面的例子中,我们并不关心exitButton按钮具体的标志符值,在使用Bind方法self.Bind(wx.EVT_BUTTON, self.OnExit, id=exitButton.GetId())
  我们调用exitButton.GetId()方法,就可以自动获得该按钮的标志符值。
  图1:自动生成控件标志符演示
  二、wxPython中的标准标识符
  在wxPython系统中,包含一些标准标志符,比如wx.ID_SAVE,wx.ID_New等等,下面的代码演示了如何使用标志标志符。#标准标识演示 import wx  class SampleStandardIdx(wx.Frame):      def __init__(self, *args, **kw):         super(SampleStandardIdx, self).__init__(*args, **kw)          self.InitUi()      def InitUi(self):         panel = wx.Panel(self)         grid = wx.GridSizer(3, 2, 0, 0)          grid.AddMany([(wx.Button(panel, wx.ID_CANCEL), 0, wx.TOP | wx.LEFT, 9),             (wx.Button(panel, wx.ID_DELETE), 0, wx.TOP, 9),             (wx.Button(panel, wx.ID_SAVE), 0, wx.LEFT, 9),             (wx.Button(panel, wx.ID_EXIT)),             (wx.Button(panel, wx.ID_STOP), 0, wx.LEFT, 9),             (wx.Button(panel, wx.ID_NEW))])                  self.Bind(wx.EVT_BUTTON, self.OnQuitApp, id=wx.ID_EXIT)          panel.SetSizer(grid)          self.SetTitle("实战wxPython: 标准标识")         self.Centre()      def OnQuitApp(self, e):         self.Close()  def main():     app = wx.App()     sample = SampleStandardIdx(None)     sample.Show()     app.MainLoop()  if __name__ == "__main__":     main()
  在上面的示例代码中,我们使用一些标准按钮标志符,如果在Linux系统中运行,则会自动添加相应的图标在这些按钮上。grid.AddMany([(wx.Button(pnl, wx.ID_CANCEL), 0, wx.TOP | wx.LEFT, 9), 		(wx.Button(pnl, wx.ID_DELETE), 0, wx.TOP, 9), 		(wx.Button(pnl, wx.ID_SAVE), 0, wx.LEFT, 9), 		(wx.Button(pnl, wx.ID_EXIT)), 		(wx.Button(pnl, wx.ID_STOP), 0, wx.LEFT, 9), 		(wx.Button(pnl, wx.ID_NEW))])
  在网格调节器上上,我们添加了六个按钮, 它们使用了六个标准标志符wx.ID_CANCEL, wx.ID_DELETE, wx.ID_SAVE, wx.ID_EXIT, wx.ID_STOP和wx.ID_New。
  在Windows系统下,运行结果如图2所示:
  图2:标准标志符演示
  在wxPython系统中,建议在可能的情况下,使用标准标识符, 因为这些标准标志符可以在某些平台上提供一些标准的图形或者行为。
  三、自定义事件标识符
  下面的代码演示如何使用自定义事件标志符:#自定义标识符  import wx  ID_MENU_NEW = wx.NewId() ID_MENU_OPEN = wx.NewId() ID_MENU_SAVE = wx.NewId()  class SampleCustomIds(wx.Frame):      def __init__(self, *args, **kw):         super(SampleCustomIds, self).__init__(*args, **kw)          self.InitUi()      def InitUi(self):         self.CreateMenuBar()         self.CreateStatusBar()          self.SetSize(350, 250)         self.SetTitle("实战wxPython: 自定义标识")         self.Centre()      def CreateMenuBar(self):         mbar = wx.MenuBar()          fMenu = wx.Menu()         fMenu.Append(ID_MENU_NEW, "新建")         fMenu.Append(ID_MENU_OPEN, "打开")         fMenu.Append(ID_MENU_SAVE, "保存")          mbar.Append(fMenu, "文件(&F)")         self.SetMenuBar(mbar)          self.Bind(wx.EVT_MENU, self.DisplayMessage, id=ID_MENU_NEW)         self.Bind(wx.EVT_MENU, self.DisplayMessage, id=ID_MENU_OPEN)         self.Bind(wx.EVT_MENU, self.DisplayMessage, id=ID_MENU_SAVE)      def DisplayMessage(self, e):         sbar = self.GetStatusBar()          eid = e.GetId()          if eid == ID_MENU_NEW:             msg = "新建菜单项被选择"         elif eid == ID_MENU_OPEN:             msg = "打开菜单项被选择"         elif eid == ID_MENU_SAVE:             msg = "保存菜单项被选择"          sbar.SetStatusText(msg)  def main():     app = wx.App()     sample = SampleCustomIds(None)     sample.Show()     app.MainLoop()  if __name__ == "__main__":     main()
  在上述示例代码中,创建了一个包括单个菜单项的菜单,菜单项的标志符通过代码ID_MENU_NEW = wx.NewId() ID_MENU_OPEN = wx.NewId() ID_MENU_SAVE = wx.NewId()
  创建,方法wx.NewId()可创建一个新的独一无二的标志符。self.Bind(wx.EVT_MENU, self.DisplayMessage, id=ID_MENU_NEW) self.Bind(wx.EVT_MENU, self.DisplayMessage, id=ID_MENU_OPEN) self.Bind(wx.EVT_MENU, self.DisplayMessage, id=ID_MENU_SAVE)
  在进行事件绑定的时候,使用了各自的标志符。eid = e.GetId()  if eid == ID_MENU_NEW: 		msg = "New menu item selected" elif eid == ID_MENU_OPEN: 		msg = "Open menu item selected" elif eid == ID_MENU_SAVE: 		msg = "Save menu item selected"
  在事件处理方法DisplayMessage中通过GetId()函数获得被点击菜单项的标识符值,通过判断该值,就可以确定当前被点击的菜单项,然后显示相应的信息。
  图3:自定义标志符演示
  四、本文知识点什么是事件标志符及其在事件系统中的作用;使用自动生成标志符;使用系统标准标识符;使用自定义标志符。
  前一篇: wxPython - 事件绑定及传播
  请多多关注,评论,收藏,点赞,和转发。

任正非华为用三年时间内完成13000颗器件的替代开发4000电路板的反复换板开发3月17日,澎湃新闻记者获悉,华为创始人任正非在难题揭榜火花奖公司内外的获奖者及出题专家座谈会上表示,华为用三年时间内完成13000颗器件的替代开发4000电路板的反复换板开发,今会顶胯的女人还挺有魅力的,王子文虽然穿得低调,但站姿真魅提起王子文,是不是不难想到三体女青年叶文洁?明明已经迈入三十岁女演员大军的她,却总是少女感十足,还是像个涉世未深的小女孩一样。外貌上逆生长,除了她在保养方面的高度自律,还少不了她永青岛地标百年栈桥变身春日时装秀场模特身着盛装在青岛栈桥走秀。王海滨摄身着盛装的走秀模特吸引民众目光。王海滨摄一名模特在进行走秀。王海滨摄拥有百年历史的栈桥变身春日时装秀场。王海滨摄走秀活动吸引众多民众。王海滨摄数杨幂不愧是大幂幂,穿肉色紧身裙凹凸感十足,36岁别有韵味杨幂是一名非常优秀的演员,童星出身的她演技非常出众,她在2011年,凭借着在电视剧宫锁玉心中饰演晴川一角红遍大江南北,成为了娱乐圈里面的当红小花旦。杨幂除了演技了得之外,颜值和身材最像欧洲人的美国绝美模特艾莉萨米勒(AlyssaMiller)艾莉萨米勒(AlyssaMiller)职业模特年龄28身高1米75体重55公斤国籍美国出生地美国加州洛杉矶出生日期1989年7月4日艾莉萨米勒(AlyssaMiller)是一名美国原来是说话不算话!那就怪不了前妻不念旧情了娱评大赏3月18日的中午,张隆的原配妻子在微博等互联网社交媒体发布了相关的文字和图片,爆出了这个被人们议论许久的出轨问题。目前,这一消息正在持续发酵!夫妻双方已谈妥离婚条件,男方净春天,跳出孤岛,跃进人海我不是凯列班,但也经历了孤岛上的暴风雨。我们都经历了一次漫长的寒冬,前所未有的生病的寒冬。病和冬,都像囚笼,但也都会过去。过去了就是春天。回想一年前的春天,似乎更有理由珍惜摆脱被疫春天来了3月18日,游客参观意大利罗马斗兽场。天气转暖,万物复苏,春天的气息已悄然降临。新华社记者金马梦妮摄3月18日,人们在意大利罗马的一处公园休闲。这是3月18日在德国柏林布里茨花园拍上街里逛春天旅游艺术季启幕为持续打造老青岛上街里品牌,融汇时尚资源,打造最具街里艺术气息的旅游艺术主题活动,3月17日,2023青岛市南上街里逛春天旅游艺术季正式启动,这是青岛市南区为市民和游客朋友们精心准一桌香椿宴香满上方山时下,北京市房山区上方山里已处处弥漫着春的气息。春天山间杏花桃花星星点点,谷雨到五一是采香椿的好季节夏季椿林满院,可观云海,品香茗,避暑乘凉正好秋季红叶翻飞色彩斑斓冬天山后的天然冰孙颖莎登基,乒乓球天下初定2017年6月,未满17岁的孙颖莎第一次参加世界大赛日本公开赛。毫无征兆地,她夺得了女单和女双的冠军。一代天才就此诞生。孙颖莎出道即巅峰,迅速站上世界屋脊。然而,那时的乒坛霸主是陈
马云从理论上说,你什么都做,往往什么都做不好马云辞职回杭时,杨致远向马云伸出橄榄枝,希望马云能出任雅虎中国总经理,但得到的是马云的拒绝。然而,买卖之间没有友谊,马云和杨致远一直保持着密切友好的关系。马云曾在与杨致远的一次对话有史以来拍摄的最高分辨率的太阳表面图像美国国家科学基金会的DanielK。Inouye太阳望远镜制作了有史以来最高分辨率的太阳表面图像。在这张789纳米的照片中,您有史以来第一次可以看到小至18英里(30公里)的特征。超600亿颗芯片!美国宣布决定,任正非打出和平华为5G的崛起可以说是一举打破了美国科技霸主的美梦,而近三年的中美科技博弈,更是让老美对高科技中企有了一种草木皆兵的感觉。就在近期,美国又推出了新规,将31家中国实力企业列入了UV回头也晚?台积电感受到失去华为的痛苦了十年河东转河西,不知道现在的台积电后悔没有!近期有媒体公布如今的手机销量排行榜,其中三星稳居第一,其次便是苹果小米vivo和oppo,这里怎么也见不到华为和荣耀的身影。其实大家都知怎样选择糖才能健康些?糖与健康有着复杂的关系!一方面,许多健康的天然食品都含有糖。糖是一种碳水化合物,可以为身体提供能量,所以它在营养方面有着重要的作用。而那些常常令人担忧的,是加工食品中经常添加的大量心脏老是不舒服,中医讲经常吃此物,养心护心,让心脏更健康之前我有一个学中医的朋友和我说,他有一个病人,经常感觉自己心绞痛,心脏不舒服,丹心滴丸之类的药物也没少吃但是总是不见好。后来那个患者只了吃一种类型的食物,心绞痛的情况也减轻了,胸闷中兴通讯亮相NetworkX,发布宽带解决方案新品日前,在荷兰阿姆斯特丹举办的NetworkX期间,中兴通讯召开宽带解决方案新品发布会,发布包括FTTx和家庭连接两大专题系列方案和新品,吸引100多批客户到场,引发高度关注。对于推风向变了!广东为何要重点扶持湛江崛起,背后蕴藏了什么大趋势?文城市情报社原创出品,欢迎关注!此前,社长在曾经与青岛齐名的湛江,为何却发展不起来?文中分析过湛江发展不起来的原因,本期文章将重点讲讲湛江的发展前景与未来。2021年,湛江固定资产陆倩芳雅居乐地产控股有限公司董事局副主席介绍陆倩芳,现任雅居乐地产控股有限公司董事局副主席,同时担任广州市房地产协会副会长广东省侨心慈善基金会荣誉主席等社会职务,曾获中山市荣誉市民称号。陆倩芳中文名陆倩芳性别女国籍中国民族汉一个年过五十,体质特别差的人,怎样从头恢复健康?教你调理守护银龄世界和长辈们聚在一起,经常还没聊几句就开始抱怨自己身体不好,就像打开了话匣子,也会倒苦水诉说自己求医艰辛,让听的人深有感触。年过五十后这种感受相信很多人都有,身体素质特别差中医提醒,拔火罐要警惕三个禁忌!拔不对危害很大拔火罐属于一种中医理疗方法,并且是比较古老的治病方法,相信大家并不陌生,很多人自己在家就能操作。拔火罐是接触热力,排去罐中的空气,产生一定的负压,使其牢牢吸附在皮肤上,可引起局部淤