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

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

6G人机交互工业互联网2022年世界互联网大会乌镇峰会热点聚焦新华社杭州11月10日电题6G人机交互工业互联网2022年世界互联网大会乌镇峰会热点聚焦新华社新华视点记者2022年世界互联网大会乌镇峰会9日在浙江乌镇开幕。从互联网之光博览会展示双十一选购指南,一文看懂华为智能手表应该怎么选?我看你不像有高血压的样子啊?不测一测怎么知道。保准儿没有。朋友信誓旦旦保证自己身体健康,但是华为WATCHD测试结果显示,他的血压低压有点第三级高压的风险。堂堂一个青壮年小伙子,怎合并退市倒闭,海外激光雷达的寒冬大逃杀钛媒体焦点激光雷达行业的整合求生环节正在开启。这次的主角,我们并不陌生,一个是激光雷达鼻祖Velodyne,一个则是曾被海外无比看好的创业新秀,且都是曾经风光无限的上市公司。关于两家当时的风15万元电动SUV卷王,哪吒UII新能源汽车品牌,除了比亚迪某斯拉和蔚小理,其实国内还有几十个。其中,市场传播力度一直不大的哪吒汽车,不经意间,销量已经直逼蔚小理。哪吒U的单车销量在9月份已经站上6000台,累计销富士康逆势造东风随着新能源的兴起,与新能源相关产业快速整合发展,特别是在造车这件事上,难免会有几家大公司对此蛋糕虎视眈眈。富士康,这个被冠冕代工之王的企业,在如今新能源汽车市场日渐攀升的关键点,正智能手机消费趋势报告02丨双11刺激下消费态度指数冲高谁是安卓机皇?每经记者王晶每经编辑文多一年一度的双11购物狂欢节正如火如荼,对于各大品牌来说,每年的双11无疑是一场群雄逐鹿厮杀激烈的战争。作为其中的重要参与者,手机厂商也不例外市场信息显示,小特斯拉又降价比亚迪高端品牌定名仰望1。特斯拉又降价继10月24日官宣降价后,特斯拉再度推出保险补贴方案。特斯拉中国发布消息称,11月8日(含)至11月30日(含),购买Model3ModelY现车以及合作保险机构车12年来首次,特斯拉单季度净利润超越丰田汽车据汽车新闻报道,近日,特斯拉正式发布2022年第三季度财报。财报显示,特斯拉当季实现营收214。54亿美元,同比增长56营业利润为37亿美元,营业利润率为17。2,汽车毛利率为27电池涨价致毛利降至13,蔚来三季度经营亏损扩大近3倍卖的越多,亏损就越多,是造车新势力们普遍面临的局面。亏损原因中,一路飙涨的锂电池价格,似乎成了车企的不可承受之重。蔚来11月10日晚间披露的三季报显示,在交付量同比增长接近30一辆联想刘军智能化转型是中国企业穿越经济周期的利器中国青年报客户端讯(中青报中青网记者张均斌)11月9日,在第八届联想创新科技大会上,联想集团执行副总裁兼中国区总裁刘军提到,智能化转型是未来十年中国企业穿越经济周期的利器。同时,联中国新首富诞生!马云马化腾财富大缩水,时代变了?文科技君中国新首富诞生!马云马化腾财富大缩水,时代变了?中国新首富诞生,他就是农夫山泉的创始人钟睒睒。当然了,说他是新首富,这并不恰当。因为钟睒睒之前就已经坐上了中国首富的位置,现
四川省政协委员嘉绒姐姐何瑜娟以乡村文旅帮助妇女就业,提升农村妇女幸福感高鼻深目,两颊微红,网名为嘉绒姐姐阿娟的四川省政协委员何瑜娟,其实是个汉族姑娘。曾经作为国际导游游遍了48个国家,在2017年因为爱情嫁到了阿坝州嘉绒藏区。目睹当时消息闭塞交通落后中国银行普洱市分行被罚贷款三查严重不尽职来源中国经济网银保监会网站13日公布的中国银保监会普洱监管分局行政处罚信息公开表(普银保监罚决字202221号)显示,中国银行股份有限公司普洱市分行贷款三查不尽职,导致部分信贷资金马来西亚公开赛结束4强争夺国羽五组进四强关注极客老爹。为您带来最新最精彩的羽球赛事报道。昨日马来西亚公开赛结束4强争夺。国羽六场外战输两场,刘欧组合遭淘汰,总体表现稳定。男单方面,奈良冈功大对战印度老将普兰诺伊,依旧是苦小年,许一个小期待剑客明珠三剑客跨年夜的钟声已然敲响,桌上的日历本已然换成了新的。可昨天弄脏的衣服,今天需要去清洗,昨天没处理完的事情,今天同样需要继续去处理。本质上,这依然是两个普通的连续的日子,陈昱东首夺男子单人滑冠军小将陈昱东逆转夺冠20222023全国花样滑冰锦标赛男单比赛于12日全部结束,18岁小将陈昱东在自由滑比赛中获得124。23分排名第一,最终以总分193分逆转夺冠。韩文宝以191。新民艺评智能电视,岂能将智能用在收费上演员李嘉明日前通过网络发布视频,公开指责电视收费乱象,他说以前打开电视就是电视,现在打开电视全是收费的,花大几千买的电视看不了。他的仗义执言引起网友共鸣,获得了超过50万的点赞。的退而不休的曹铁嘴走了,他曾让中日擂台赛家喻户晓著名围棋评论家前国手曹志林八段于1月12日19时在上海因病逝世,享年75岁。曹志林曹志林出生于1947年,1964年入上海围棋队,1965年入国家围棋队,1974年和1977年两度警训当如吴亦凡,恋爱当如鹿晗,品行当如刘德华,爱国当如王嘉尔近日,王嘉尔的20222023年MAGICMAN世界巡回演唱会在英国伦敦举行,在当晚表演间隙,王嘉尔用英语公开发表爱国言论,怒斥外媒造谣抹黑中国的虚假报道。现场他义正言辞,表示事实科学家证实南京花内含胚珠为侏罗纪已出现被子植物添新证南京花的复原图。南古所供图中新网南京1月11日电(记者杨颜慈)记者11日从中国科学院南京地质古生物研究所获悉,该所王鑫研究员傅强研究员等利用微CT技术穿透南京花化石揭示了肉眼无法直QQ音乐Flyme版上线,清爽界面展现用户关怀!门店信息有眉目去年魅族的魅友大会2022活动公布之时,QQ音乐Flyme版消息也同步释出。这款双方合作的诚意之作将在今年1月份上线,为大家带来海量正版曲库灵动语音唤醒智能听歌识曲AliveDes普吉风情别样的人妖秀早听说过泰国的人妖,此行一见,与我的想象还是很有差距,因为他们比我想象的还美,而且多才多艺,看了他们的表演,我的感情很复杂,心情久久无法平静。导游说,在泰国,美的是妖,不美的是人。