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

wxPython高级控件之树状控件TreeCtrl

  实战wxPython系列-041
  树形控件wx.TreeCtrl将信息表示为层次结构,其中的项可以展开以显示更多的项。
  一、树状控件wx.TreeCtrl
  wx.TreeCtrl继承自wx.WithImages类,因此提供了将图像与控件项关联的函数。通过wx.WithImages可以使每个项使用索引来引用它的图像。除正常图像外,用上述方法处理wx.TreeCtrl还提供了可选的状态图像,可用于指示项目的一些附加状态,例如选中或未选中状态。
  wx.TreeCtrl支持的窗口样式:wx.TR_EDIT_LABELS:子项文本是否可编辑。wx.TR_NO_BUTTONS:不必显示用于展开或者合并子项的按钮。wx.TR_HAS_BUTTONS:显示用于展开或者合并子项的按钮。wx.TR_TWIST_BUTTONS:选择+/ -按钮的替代样式,并显示旋转("扭转")箭头。目前这种风格只在微软Windows Vista和以后的Windows版本下实现,在其他平台下被忽略。wx.TR_NO_LINES:不必显示用于表示层级关系的垂直虚线。wx.TR_FULL_ROW_HIGHLIGHT:当选中某个子项的时候高亮显示整行(在windows平台上,除非设置了wx.TR_NO_LINES,否则这个类型将被忽略) wx.TR_LINES_AT_ROOT:不必显示根节点之间的连线.这个类型只有在设置wx.TR_HIDE_ROOT 并且没有设置wx.TR_NO_LINES 的时候有效。wx.TR_HIDE_ROOT:不显示根节点,这将导致第一层的字节点成为一系列根节点。wx.TR_ROW_LINES:使用这个类型在已显示的行之间绘制一个高对比的边界。wx.TR_HAS_VARIABLE_ROW_HEIGHT:设置这个类型允许各行采用不同的高度,否则各行都将采用和最大的行高同样的高度。这个类仅适用于树状控件的标准实现(而非各个平台的原生实现)。 wx.TR_SINGLE:单选模式。wx.TR_MULTIPLE:多选模式。wx.TR_DEFAULT_STYLE:默认窗口样式。
  wx.TreeCtrl发出的事件:EVT_TREE_BEGIN_DRAG:鼠标左键拖动时产生。EVT_TREE_BEGIN_RDRAG:鼠标右键拖动时产生。EVT_TREE_END_DRAG:鼠标左键或右键结束拖拽时产生。EVT_TREE_BEGIN_LABEL_EDIT:开始编辑标签时产生。可以通过调用Veto()来阻止事件生成。EVT_TREE_END_LABEL_EDIT:结束编辑标签时产生。可以通过调用Veto()来阻止事件生成。EVT_TREE_DELETE_ITEM:当某个子项被删除的时产生。EVT_TREE_GET_INFO:当某个子项的数据被请求的时产生。EVT_TREE_SET_INFO:当某个子项的数据被设置的时产生。EVT_TREE_ITEM_ACTIVATED:当某个子项被激活(双击或者使用键盘选择)的时产生。 EVT_TREE_ITEM_COLLAPSED:给定的子项已被折叠 (合并)的时产生。EVT_TREE_ITEM_COLLAPSING:给定的子项即将 折叠 (合并)的时产生。 可以通过调用Veto()来阻止事件生成。EVT_TREE_ITEM_EXPANDED:给定子项已被展开的时产生。EVT_TREE_ITEM_EXPANDING:给定子项即将展开的时产生。可以通过调用Veto()来阻止事件生成。EVT_TREE_ITEM_RIGHT_CLICK:当鼠标右键单击了子项时产生。EVT_TREE_ITEM_MIDDLE_CLICK:当鼠标中键单击了子项时产生。EVT_TREE_SEL_CHANGED:选中的子项发生变化以后(新的子项被选中或者旧的选中项不被选中的时候)产生。EVT_TREE_SEL_CHANGING:选中的子项即将发生变化的时产生。可以通过调用Veto()来阻止事件生成。EVT_TREE_KEY_DOWN:当针对该树状控件的键盘事件发生时产生。EVT_TREE_ITEM_GETTOOLTIP:设置子项的提示信息时产生(仅适用Windows)。EVT_TREE_ITEM_MENU:当鼠标右键或者使用菜单键激活子项的上下文菜单时产生。EVT_TREE_STATE_IMAGE_CLICK:当子项的状态图像被点击时产生。
  wx.TreeCtrl常用方法:AddRoot ( self ,  text ,  image=-1 ,  selImage=-1 ,  data=None ):将根节点添加到树中,返回新子项。 AppendItem ( self ,  parent ,  text ,  image=-1 ,  selImage=-1 ,  data=None ):将一个子项目添加到由父分支标识的分支末尾,返回一个新的子项id。 Collapse ( self ,  item ):折叠给定的子项。 CollapseAll ( self ):折叠根项。 CollapseAllChildren ( self ,  item ):递归地折叠指定子项及其所有子项。 CollapseAndReset ( self ,  item ):折叠指定项并删除该子项的所有子项。 Delete ( self ,  item ):删除指定的子项。 DeleteAllItems ( self ):删除控件的所有子项。 DeleteChildren ( self ,  item ):删除给定子项的所有子项(不删除子项本身)。 EditLabel ( self ,  item ):开始编辑给定子项的标签信息。 EndEditLabel ( self ,  item ,  discardChanges=False ):结束编辑给定子项的标签信息。 EnsureVisible ( self ,  item ):滚动和/或展开给定子项以确保给定的子项是可见的。 Expand ( self ,  item ):展开给定的子项。 ExpandAll ( self ):展开树形控件的所有子项。 ExpandAllChildren ( self ,  item ):递归展开给定项及其所有子项。 GetChildrenCount ( self ,  item ,  recursively=True ):返回分支中的子项数。 GetCount ( self ):返回控件的子项数。 GetItemData ( self ,  item ):返回与指定子项关联的树形控件项数据。 GetItemText ( self ,  item ):返回指定子项的标签信息。 GetRootItem ( self ):返回树形控件的根项。 GetSelection ( self ):返回选定项,如果没有选定项则返回无效项。 IsEmpty ( self ):如果控件为空(即没有项,甚至没有根项)则返回True。 IsExpanded ( self ,  item):如果指定子项是展开状态,则返回True(只有当它有子项时才有意义)。 IsSelected ( self ,  item ):如果指定子项被选中则返回True。 IsVisible ( self ,  item ):如果指定子项屏幕可见则返回 True。 SelectChildren ( self ,  parent ):选择给定父节点的所有直接子节点。此函数只能与多选控件一起使用。 SelectItem ( self ,  item ,  select=True ):选择给定的子项。在多选控件中,如果select的值为False,也可用于取消选择当前选定的项。 SetItemData ( self ,  item ,  data ):设置指定项的客户区数据。 SetItemText ( self ,  item ,  text ):设置指定项的标签信息。 Unselect ( self ):取消当前选定项(如果有)。
  图1:wx.TreeCtrl类继承关系
  二、wx.TreeCtrl演示 #树形控件(wx.TreeCtrl)  import wx  class SampleTreeCtrl(wx.Frame):      def __init__(self, *args, **kw):         super(SampleTreeCtrl, self).__init__(*args, **kw)          self.InitUi()      def InitUi(self):         #设置标题         self.SetTitle("实战wxPython: TreeCtrl演示")         #设置窗口尺寸         self.SetSize(400, 320)          panel = wx.Panel(self)         vbox = wx.BoxSizer(wx.VERTICAL)          #创建树形控件         self.treectrl = wx.TreeCtrl(panel, wx.ID_ANY, wx.DefaultPosition, (-1, -1), wx.TR_HIDE_ROOT | wx.TR_HAS_BUTTONS)          #显示树形控件选中项的名称         self.info = wx.StaticText(panel, wx.ID_ANY, "", wx.DefaultPosition, (-1, 40), style = wx.ALIGN_CENTER)          #给树形控件添加数据          root = self.treectrl.AddRoot("程序员")         os = self.treectrl.AppendItem(root, "操作系统");         prog_lang = self.treectrl.AppendItem(root, "编程语言")         tool_kit = self.treectrl.AppendItem(root, "工具包")         self.treectrl.AppendItem(os, "Windows")         self.treectrl.AppendItem(os, "Ubuntu")         self.treectrl.AppendItem(os, "Android")         compile_lang = self.treectrl.AppendItem(prog_lang, "编译语言")         shell_lang = self.treectrl.AppendItem(prog_lang, "脚本语言")         self.treectrl.AppendItem(compile_lang, "C")         self.treectrl.AppendItem(compile_lang, "C++")         self.treectrl.AppendItem(compile_lang, "JAVA")         self.treectrl.AppendItem(shell_lang, "JS")         self.treectrl.AppendItem(shell_lang, "PHP")         self.treectrl.AppendItem(shell_lang, "Python")         self.treectrl.AppendItem(shell_lang, "Lua")         self.treectrl.AppendItem(tool_kit, "QT")         self.treectrl.AppendItem(tool_kit, "wxWidgets")         self.treectrl.AppendItem(tool_kit, "Gtk+")         self.treectrl.AppendItem(tool_kit, "Swing")         self.treectrl.ExpandAll()          #事件处理         self.treectrl.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged)          vbox.Add(self.treectrl, 1, wx.EXPAND, border = 10)         vbox.Add(self.info)          panel.SetSizer(vbox)          self.Centre()      def OnSelChanged(self, e):         item = e.GetItem()         self.info.SetLabel(self.treectrl.GetItemText(item))  def main():     app = wx.App()     sample = SampleTreeCtrl(None)     sample.Show()     app.MainLoop()
  上述代码演示如何创建一个wx.TreeCtrl控件,并给控件添加一些子项,当我们用鼠标选择某个子项时,该子项的标签信息将被显示在下面的静态文本控件上。
  图2:wx.TreeCtrl演示
  三、本文知识点 了解和使用wx.TreeCtrl。
  前一篇:wxPython -高级控件之列表框ListCtrl
  请关注,评论,收藏,点赞,和转发。

柯洁七届四冠,申真谞二连亚,今年三星杯谁主沉浮?第27届三星杯10月27日开赛,11月9日前决出2022最后一冠。迟至20日抽签前夕,外卡人选方才宣布,吴清源杯封后的吴侑珍雀屏中选,至此三星杯终于凑齐32人,韩国占据半壁江山。中10个16强席位敲定,中国2人晋级,淘汰丁俊晖的业余球员再爆大冷北京时间10月20日消息,2022年斯诺克北爱尔兰公开赛结束了十场116决赛的争夺,10个16强席位就此敲定,中国斯诺克2人晋级,肖国栋43绝杀瓦菲,李行40乔丹布朗。此外,上一轮NBA湖人VS快船西甲奥萨苏纳VS西班牙人NBA1000湖人VS快船这是湖人本赛季的第二场,有了第一场的教训,湖人不知道能否改善,压力也在哈姆这边。明日的配合应该也能稍微强一点,毕竟湖人也是需要改变的。在湖人外线也是做得不24分惨败!广厦轰然倒下,孙铭徽188无力回天,外援一塌糊涂北京时间10月20日,CBA常规赛继续开打,广厦男篮76100北京首钢,此役上从半场就失去比赛悬念,北京首钢多人轮换利夫的出色发挥,完全是接管比赛的主动权,而孙铭徽手感不佳,再加上曼联踢出进攻最流畅一战中场两将实现自我救赎北京时间10月20日鲍道,在0比0闷平纽卡斯尔之后,继续主场作战的曼联2比0拿下热刺,为自己打了一场正名之战,本场比赛堪称球队本赛季进攻最为流畅的一场比赛。而上轮联赛饱受质疑的弗雷为何说中国天眼这一发现,挑战了星系形成理论?新京报快评FAST探测到的在著名致密星系群斯蒂芬五重星系周围天区中的原子气体分布。图中科院国家天文台中国天眼FAST望远镜再次获得创新成果。据新京报报道,近日,由中国科学院国家天文台研究员徐中国天眼公布新发现!能看穿137亿光年,地外生命成果还等多久?自从美国天眼彻底损坏之后,中国天眼已经彻底成为了世界上唯一的天眼了。并且随着中国天眼不断进行对太空的探索,也获得了一批又一批的成就。这不,中国天眼在探索方面又获得了重大突破中国天眼地宫已开!看看中国罕见的丫环墓什么样子在逾制的潞王和赵妃墓里,有两座丫环墓,和赵妃并肩而立,共枕一山,同蹬一水。享受级别之高,规模罕见形制独特,乃是中国历代帝王陵中唯一的丫环坟。传说这两个丫环是河南卫辉的一对姐妹,因家英国曾送乾隆3件寿礼,若乾隆没当成垃圾,中国或能成一流强国清朝早期,是个挺强大的王朝,但统治者也因此过度的自我膨胀,觉得自己不需要与外国来往,于是关起门来过自己的小日子。结果由于国家太过闭塞,没有跟上时代发展的步伐,被欧洲国家给比下去了。国际资本持续做空日元日债,日本即将跌落发展中国家?速胜,速败,一体两面。或则对于中国的长处,夸大得离开了真实情况,变成另一种样子或则拿一时一地的强弱现象代替了全体中的强弱现象,一叶障目,不见泰山论持久战日本跌落发展中国家?最近的简女篮世界杯上泄露的大健康商机,秀域开放加盟,好机会不能错过在刚刚结束的2022年女篮世界杯决赛上,中国女篮队员背后的小蓝标秀域,让一个大健康智能健康服务品牌亮眼于大众视野。于是,众人了解后惊人地发现,大健康领域或将正处于大爆发的年代。以秀
导致肌骨骼疼痛出现的三角关系,他们的关系就像渣男渣女一样乱如有侵犯版权请联系删除今天我们来学习一下杨达的一些肌肉疼痛理念。什么是肌肉失衡?肌肉失衡理论中存在两个观点一个是萨赫曼认为是生物力学导致的另外一个是杨达认为是神经控制因素导致的肌肉中美会晤六细节看美方该走出死胡同了全球风云变幻之际,中美外交高层又见面了。7月9日,国务委员兼外长王毅同美国国务卿布林肯举行会晤。拜登政府执政以来,中美外长保持经常性沟通,已经六次通电话,而此次巴厘岛会晤,也是中美胸大魅力高,不论男女,训练杠铃卧推时,这个细节要注意胸部越大越有吸引力,不论男女,这可是有研究报告支持的。对于胸肌的热爱,我觉得这里不需要强调了,想想你在周一走进健身房,你会看到什么?周一作为世界推胸日,那可不是空穴来风的!美队胸肌36岁杨幂受伤事件再升级!粉丝哭到想轻生,伤情或不容乐观杨幂录节目受伤后续7月9日。36岁知名女星杨幂在录制某综艺节目的过程中,由于节目组的安全措施不到位。导致杨幂眼部受伤。杨幂受伤后,被节目组紧急叫停节目的录制,连忙拨打了120叫来救安倍离世第三天,驻日记者曾颖再次点赞,粉丝已经上涨248万安倍离世第三天,驻日记者曾颖再次点赞,粉丝已经上涨248万相信比较关注这两天新闻的朋友们应该很了解,有一个叫做曹颖的女记者,最近成为了大众都比较关注的热点人物。这并不是因为她做出了襄汾县第十七届人民代表大会常务委员会第八次会议召开视频加载中7月6日,襄汾县第十七届人民代表大会常务委员会第八次会议召开。县人大常委会主任傅德明,县人大常委会副主任张淑玲王世红邓兴出席会议,县委常委县政府党组副书记周建民,副县长张戴托尼盔的并非一定是桂军,戴这种钢盔的更不一定是德械师网上流传着一种说法,民国时期英国的那种扁平形钢盔(托尼盔),是广西桂军的标志。这个说法很容易误导,以至于一看到有托尼盔的抗战老照片,就有人喊桂军,广西狼兵。这是七七事变后,广西军出天地十大异火3阴阳逆心炎有天地间所有阴火阳火的残余能量所化,但拥有者可锻炼出阴阳眼。阴阳对立即指世间一切事物或现象都存在着相互对立的阴阳两个方面,如上与下天与地动与静升与降等等,其中上属阳下属阴江湖宝典一些江湖术语及常见的名词解析(三)自残肢体比武茅山花女珍薇在秦淮花会上选夫比武,拳掌兵刃难分上下,于是她提出了这种自残肢体比武方式。比武双方各持一柄利剑,她在先,自行斩掉左手小指,对方随后再削去五指,再削手臂左右腿美国中国日本三大经济体,负债各有多少?在如今这个时代,不管是国家企业还是个人,都或多或少身背一些债务。比如说,普通人有房贷车贷,而企业的发起资金,也时常需要从银行中贷款。国家层面就更不用说,看看对岸的美国,就是靠着不断海马斯被乌克兰用成了战略武器,M270也将入列,俄军指挥所又被炸当地时间7月8日,败灯签署了一项4亿美元的对乌克兰军援计划,其中包括再交付4套海马斯高机动多管火箭系统,这意味着,加上此前的8套,美国提供给乌克兰的海马斯火箭炮系统已经有12套,不