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

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 - 事件绑定及传播
  请多多关注,评论,收藏,点赞,和转发。

金观平外资扩容彰显中国市场强大磁吸力全球资管机构正加快布局中国市场。今年以来,外资独资公募基金数量扩容至7家合格境外投资者资格也在不断扩容,年内又有6家机构获批。同时,多家外资机构表示看好中国市场中长期投资潜力。在国24年后,再看凤凰传奇曾毅玲花的境遇,才明白55分账的重要性我在仰望,月亮之上,有多少梦想在自由地飞翔2005年的一首月亮之上几乎一夜之间火遍大江南北,全国各地的广场上播放的都是这首歌,所有人都知道了这个组合凤凰传奇。他们的歌可以说是自带M放下焦虑,放过自己当下教育的焦虑曾经不能输在起跑线上这一句口号,坑害了多少个家庭老师的焦虑各种考核评比,各种绩效奖金和教学成绩挂钩父母的焦虑各种补课班培训班兴趣班,有的甚至辞职全职陪娃读书。娃的问题春天排毒,一年不堵,春季要吃这排毒菜,给身体洗个澡大家好,我是美妈。很多人说春天要排毒,身体一年都健康,那为啥不是夏天排毒,或者秋天排毒呢?原来这是有很多说法的。1。春天是一切的开始,是生命和勃发的开始,在春意盎然的时候,很多细菌焦虑症?无人诉说,还好可以在这里说说事情的起因2022年9月21日莫名的感觉头部有点疼痛,有点鼻塞,可能是天气变冷,不小心感冒了吧。晚上还跟朋友出去喝了几瓶啤酒,吃了一顿小烧烤,凌晨两点多才到家回去就睡着了,因为之前吃晚饭时,长期喝点白酒的人,最后身体怎样了?医生说出实话我们常说喝酒有害健康,甚至连权威医学期刊柳叶刀也曾发表多篇研究,指出酒精是世界头号致癌物。但有些人还是不以为然,甚至在每天吃晚饭时喝点酒,觉得这样能够养生活血,那么每天晚饭喝点白酒得开学焦虑症的到底是家长还是孩子?前一阵子全国大部分地区的学校幼儿园都在忙忙碌碌准备开学,我们当地也不例外。在开学的前两天一位本庄的大姐带着孩子找到我,说大妹子赶紧的,帮大姐复印点东西。正好啊,之前我为了自己充电学每天坚持吃1个鸡蛋,对身体是好是坏?每天坚持吃1个鸡蛋,对身体是好是坏?真相来了!鸡蛋丢掉蛋黄,蛋黄胆固醇高,影响心血管。每天吃1个鸡蛋,患上糖尿病和高血压的风险大大增加!这些说法让很多人对自己的饮食习惯产生了怀疑,惊蛰过后,无论贫富,记住4多吃3少吃,阳气足身体好,健康过春天惊蛰过后,无论贫富都要多吃3少吃,阳气足身体好,健康过春天。这是因为4多吃是指春天的食物,还有3少吃,为什么要这样说呢?惊蛰过后,无论贫富,记得4多吃春天来了,惊蛰是一个节气。这个每天坚持吃1个鸡蛋,对身体是好是坏?最新研究来了!鸡蛋丢掉蛋黄,蛋黄胆固醇高,影响心血管。每天吃1个鸡蛋,患上糖尿病和高血压的风险大大增加!这让很多人对自己的饮食习惯产生了怀疑,每天坚持吃1个鸡蛋,对身体是好是坏?01hr研究每周凝心聚力,与中国发展同频共振3月5日上午,第十四届全国人民代表大会第一次会议在北京人民大会堂开幕。国务院总理李克强作政府工作报告。同一时刻,许多身处不同时区的华侨华人对标北京时间,通过各种方式了解政府工作报告
80后四川姑娘嫁德国机长,生下一个混血儿,婆婆跟妈妈成闺蜜阅读前先点关注,以便您讨论和分享,感谢您的参与和支持,石头比心这是写故事的石头讲述的第147位人物!一个89年的四川妹子大静为爱远嫁德国,2021年生下一个混血女儿,一开始谈恋爱的实用育儿心经分享上班族妈妈的教子宝典写在前面的话偶尔在电脑中发现了这个上班族妈妈的教子宝典电子版内容,(作者张晓彤夜深等著),没有翻阅过,大概沉积都有十年了,现在孩子刚幼儿园,慢慢分享的同时自己也汲取其中的营养,在培去有风的地方谢之遥许红豆正式官宣,新春拜年礼开启预约!田园治愈剧去有风的地方正在湖南卫视芒果TV双平台独播该剧由刘亦菲李现领衔主演胡冰卿牛骏峰特邀主演吴彦姝董晴范帅琦马梦唯赵子琪马柏全主演杨昆艾丽娅崔奕傅迦焦刚张磊郝文婷主演涂松岩刘佳去有风的地方大结局民宿迎客,四条感情线获赞,两处开放式电视剧去有风的地方迎来大结局,许红豆和谢之遥等人通过进出往返有风小院,各自从当初的迷茫低谷生活状态,都找到了人生的突破口,那些烦恼困苦被治愈,无限接近幸福的感觉真好。有由于时间不会除了香港澳门,我国还有一个地方租期是99年,您知道是哪里吗?前言记得小编在中学的时候,每每读到中国近代史,晚清时期是最让人感到窝囊的。除了受他国欺辱基本上没别的事。在很多人眼里,当时的清政府腐败不堪,极度落后。列强瓜分中国漫画1842年,清地方卫视的春晚为什么越来越比央视春晚有看头了?兔年春晚异常精彩,除了央视春晚外,各地方卫视也都推出了有自己特色的春晚,尤其是在大年初一这一天,有多达9档卫视都上演了自己的春晚节目,这也让观众有了幸福的烦恼,如何操控手中的遥控器中国西部5大赏花圣地,你去过几个?3月一年一度的赏花季你2023年春季赏花地想好去哪里玩了吗?小编为你准备了5个赏花观景点去迎接中国最美的春色去贵州看6000亩的平坝樱花百里杜鹃去金川看洁白的梨花去林芝看大片大片的从布衣到秦国丞相,李斯的悲惨结局,告诉世人这样两个道理李斯是我国历史上一位著名的丞相,但与姜子牙管仲诸葛亮等丞相青史留名不同,李斯之所以一直被后世提起,是因为他的所作所为和他凄惨的下场。国际友人李斯李斯在秦国当的丞相,但他其实是楚国人91岁老太晚上精神如峨眉山的猴昨天有评价说有功夫发图,给老太太梳梳头发!答复头发就是这么炸着,梳了也是飞的那种。老太爱干净,自己还看看镜子,梳梳头发呢!时间颠倒也倒不过来,今天醒的晚,晚上1点到4点半精神如猴锻林村许愿树香江许愿圣地承载美好新年企盼解说一个个系有新年愿望的金桔被抛向空中,高高地悬挂在树梢,红色的愿望纸随风飞舞。每年农历正月初一,位于香港新界大埔林村的许愿树下总是人山人海,这里是香港知名的许愿胜地,坐落在村内建四川峨眉山景区1月23日门票即将售完,观光车票已售罄封面新闻记者杜卓滨最新中午12时消息1月23日中午,封面新闻记者从四川省乐山市峨眉山景区获悉,金顶游客已经饱和,上山观光车停售。景区预售门票已经超过2。8万张,逼近单日3。3万张的