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

wxPython高级控件之列表控件ListCtrl

  实战wxPython系列-040
  wx.ListCtrl是项列表的图形表示。一个wx.ListBox只能有一列。 wx.ListCtrl可以有多个列。wx.ListCtrl是一个非常常见和有用的控件。例如,文件管理器使用wxListCtrl来显示文件系统上的目录和文件。
  一、wx.ListCtrl列表控件
  wx.ListCtrl可以以三种不同的格式使用。列表视图、报表视图、图标视图和小图标视图。这些格式由wx.ListCtrl窗口样式wx.LC_REPORT, wx.LC_LIST,wx.LC_ICON和wx.LC_SMALL_ICON控制。
  在任何情况下,元素都是从0开始编号的。对于所有这些模式,项都存储在控件中,必须使用wx.ListCtrl.InsertItem方法将项添加到控件中。
  报表视图的一个特殊情况与列表控件的其他模式非常不同,它是一个虚拟控件,其中的项数据(包括文本、图像和属性)由主程序管理,只有在需要时才由控件本身请求,这允许拥有数百万项的控件而不消耗太多内存。要使用虚拟列表控件,必须首先使用wx.ListCtrl.SetItemCount,并至少重写wx.ListCtrl.OnGetItemText(以及可选的wx.ListCtrl.OnGetItemImage或wx.ListCtrl.OnGetItemColumnImage和wx.ListCtrl.OnGetItemAttr),以便在控件请求时返回有关项的信息。
  虚拟列表控件可以像普通控件一样使用,除了没有需要与控件中项目数量成比例的时间的操作发生-这是允许拥有实际上无限数量的项目所必需的。例如,在多个选择虚拟列表控件中,当一次选择了许多项时,选择不会被发送,因为这可能意味着遍历所有项。
  wx.ListCtrl支持的窗口样式:wx.LC_LIST:使用可选的小图标进行多列显示。列数是自动计算的,不需要设置像wx.LC_REPORT那样设置列数。换句话说,这只是一个自动换行的排列。wx.LC_REPORT:单列或者多列报告方式,并且可以设置可选的标题。wx.LC_VIRTUAL:指定显示的文本由应用程序动态提供; 只能用于wxLC_REPORT方式。wx.LC_ICON:大图标方式显示,可选显示文本标签。wx.LC_SMALL_ICON:小图标方式显示,可选显示文本标签。 wx.LC_ALIGN_TOP:图标顶端对齐(仅适用于Windows)。 wx.LC_ALIGN_LEFT:图标左对齐。 wx.LC_AUTOARRANGE:图标自动排列(仅适用于Windows)。 wx.LC_EDIT_LABELS:标签可编辑;当编辑动作开始时应用程序将收到通知。wx.LC_NO_HEADER:在报告模式下不显示标题。 wx.LC_SINGLE_SEL:指定单选模式(默认为多选模式)。 wx.LC_SORT_ASCENDING:从小到大排序。应用程序需要在SortItems中提供自己的排序函数。wx.LC_SORT_DESCENDING:从大到小排序。 应用程序需要在SortItems中提供自己的排序函数。wx.LC_HRULES:在报告模式中显示每行之间的标尺。wx.LC_VRULES:在报告模式中显示每列之间的标尺。
  wx.ListCtrl发出的信息:EVT_LIST_BEGIN_DRAG:用鼠标左键拖动时产生。EVT_LIST_BEGIN_RDRAG:鼠标右键拖动时产生。EVT_LIST_BEGIN_LABEL_EDIT:开始编辑标签时产生。可以通过调用Veto()来阻止编辑。EVT_LIST_END_LABEL_EDIT:完成标签的编辑时产生。可以通过调用Veto()来阻止编辑。EVT_LIST_DELETE_ITEM:删除了一个子项时产生。EVT_LIST_DELETE_ALL_ITEMS:删除所有子项时产生。EVT_LIST_ITEM_SELECTED:已完成选择时产生。EVT_LIST_ITEM_DESELECTED:子项被取消选中时产生。EVT_LIST_ITEM_ACTIVATED:子项被激活(输入或双击)时产生。EVT_LIST_ITEM_FOCUSED:当前焦点项已更改时产生。EVT_LIST_ITEM_MIDDLE_CLICK:在子项上单击了鼠标中间按钮时产生(只有泛型控件支持这一点)。EVT_LIST_ITEM_RIGHT_CLICK:在子项上单击鼠标右键时产生。EVT_LIST_KEY_DOWN:在有针对列表控件的按键事件的时产生 。EVT_LIST_INSERT_ITEM:新的子项插入的时产生 。EVT_LIST_COL_CLICK:某一列被鼠标左键单击的时产生。 EVT_LIST_COL_RIGHT_CLICK:某一列被鼠标右键单击的时产生。 EVT_LIST_COL_BEGIN_DRAG:用户开始调整列的大小时产生。可以通过调用Veto()来阻止。EVT_LIST_COL_DRAGGING:列之间的分隔符正在被拖动时产生。EVT_LIST_COL_END_DRAG:用户调整了列的大小之后产生。EVT_LIST_CACHE_HINT:为虚拟列表控件准备缓存时产生。EVT_LIST_ITEM_CHECKED:项已选择后产生。EVT_LIST_ITEM_UNCHECKED:子 项取消选择后产生。
  wx.ListCtrl常用方法:Append ( self ,  entry ):向列表控件添加一个 子 项。 AppendColumn ( self ,  heading ,  format=LIST_FORMAT_LEFT ,  width=-1 ):在报表视图模式向列表控件添加新列。 ClearAll ( self ):删除所有项和所有列。 DeleteAllColumns ( self ):删除列表控件中的所有列。 DeleteAllItems ( self ):删除列表控件中的所有子项。 DeleteColumn ( self ,  col ):删除指定列。 DeleteItem ( self ,  item ):删除指定子项。 EditLabel ( self ,  item ):开始编辑给定项的标签。 GetColumn ( self ,  col ):获取指定列的信息。 GetColumnCount ( self ):返回列数。 GetColumnWidth ( self ,  col ):获取列宽度(仅限报表视图)。 GetItem ( self ,  itemIdx ,  col=0 ):获取指定项的信息。 GetItemCount ( self ):返回列表控件中的项数。 GetItemData ( self ,  item ):获取与指定关联的应用程序定义的数据。 InsertColumn   (self, col, info):插入一列(仅适用报表视图)。 InsertItem   (self, info):插入一个项,如果成功则返回新项的索引,否则返回-1。 IsEmpty ( self ):如果控件当前不包含任何项,则返回True。 Select ( self ,  idx ,  on=1 ):选择/取消选择一个项。 SetColumn ( self ,  col ,  item ):设置指定列的信息。 SetItem   (self, info):设置一个项的数据。 SetItemCount ( self ,  count ):此方法只能用于虚拟列表控件。它用于向控件指示其包含的项的数量。 SetItemData ( self ,  item ,  data ):将应用程序定义的数据与此项关联。
  图1:wx.ListCtrl类继承关系
  二、wx.ListCtrl演示 #列表控件(wx.ListCtrl)  import wx  data = [     ("鲁迅", "浙江", "1881"),     ("艾青", "浙江", "1910"),     ("沈从文", "湖南", "1902"),     ("郁达夫", "浙江", "1896"),     ("巴金", "四川", "1904"),     ("莫言", "山东", "1955") ]  class SampleListCtrl(wx.Frame):      def __init__(self, *args, **kw):         super(SampleListCtrl, self).__init__(*args, **kw)          self.InitUi()      def InitUi(self):         #设置标题         self.SetTitle("实战wxPython: ListCtrl演示")         #设置窗口尺寸         self.SetSize(400, 240)          panel = wx.Panel(self)         hbox = wx.BoxSizer(wx.HORIZONTAL)          self.list = wx.ListCtrl(panel, wx.ID_ANY, style = wx.LC_REPORT)          self.list.InsertColumn(0, "名字", width = 140)         self.list.InsertColumn(1, "出生地", width = 130)         self.list.InsertColumn(2, "出生年份", wx.LIST_FORMAT_RIGHT, 90)          idx = 0          for i in data:             index = self.list.InsertItem(idx, i[0])             self.list.SetItem(index, 1, i[1])             self.list.SetItem(index, 2, i[2])             idx += 1          hbox.Add(self.list, 1, wx.EXPAND)         panel.SetSizer(hbox)          self.Centre()  def main():     app = wx.App()     sample = SampleListCtrl(None)     sample.Show()     app.MainLoop()
  上面的代码演示如何使用wx.ListCtrl控件来显示有关文学家的一些信息。self.list = wx.ListCtrl(panel, wx.ID_ANY, style = wx.LC_REPORT)
  使用wx.LC_REPORT窗口模式创建一个wx.ListCtrlk控件。self.list.InsertColumn(0, "名字", width = 140)  self.list.InsertColumn(1, "出生地", width = 130)  self.list.InsertColumn(2, "出生年份", wx.LIST_FORMAT_RIGHT, 90)
  插入三列。可以指定列的宽度和列的格式。默认格式为wx.LIST_FORMAT_LEFT。idx = 0      for i in data:         index = self.list.InsertItem(idx, i[0])         self.list.SetItem(index, 1, i[1])         self.list.SetItem(index, 2, i[2])         idx += 1
  使用两个方法将数据插入wx.ListCtrl。每行以InsertItem()方法开始。该方法的第一个参数指定行号。该方法返回行索引。SetItem()方法将数据添加到当前行的连续列中。
  图2:wx.ListCtrl演示
  三、 wx.ListView控件
  wx.ListView继承自wx.ListCtrl,它提供一个更容易使用的接口,在一般情况下,使用wx.ListView比直接使用wx.ListCtrl更好。wx.ListView和wx.ListCtrl使用相同的事件、相同的窗口样式。
  图3:wx.ListView类继承关系
  四、本文知识点 wx.ListCtrl和wx.ListBox的区别。了解和使用wx.ListCtrl。了解wx.ListView。
  前一篇:wxPython -高级控件之列表框ListBox
  请关注,评论,收藏,点赞,和转发。

前有巨头挤压,后有网红阻击,老牌车企新日靠啥破局?1999年,新日电动车(北京新日)在北京密云成立,从事交通工具的研发生产。2002年,新日电动车(北京新日)落址无锡。2017年4月27日,新日股份(603787)于上海证券交易所零为什么不能作为除数的最佳解释不知道你家的孩子在学除法的时候,有没有问过这样的问题,零为什么不能作为除数呢?如果你家的孩子有问过,那要恭喜你,你的孩子很有这种刨根问底的品质,而这种品质对学好数学是非常重要的。因三国十大谋士排名庞统第九,郭嘉第五,前四分别是谁?三国是中国历史上英雄辈出的时代,因为一部三国演义更是让这些人物深入人心,为人津津乐道。三国有不少有为的雄主,也有众多勇武非凡的猛将,更有许多运筹帷幄决胜千里的智谋之士。今天我们来盘朱元璋弑君夺位杀死韩林儿,可众人为何却说他杀得好?1366年,朱元璋将自己原来的皇帝韩林儿沉入海底溺死,随后改朝换代,自己当上了皇帝。自古弑君夺位受世人唾骂,可为什么朱元璋非旦没有受到谴责,反而众人还说他杀得好?提及原因,众人却是襄樊之战时,如果让五虎将其余四人对战庞德,结果会如何?关羽号称东汉后期第一猛将,在吕布死后,更是看谁都是插标卖首。如夏侯惇,庞德乃至东吴诸将都入不了关羽法眼,不是匹夫就是鼠辈。当然关羽手中青龙偃月刀,坐下天下第一坐骑赤兔马,再加上快,古代官员经常辞官回乡,靠啥生活?其实古人有一特质我们丢失了纵观历史官场,不难发现这样一个规律,那就是只要在做官期间有不满的地方,无论是对皇帝的政策不满,还是对官场的生活不满,这些官员们总是喜欢辞官回乡,对此,人们不禁纳闷,没了官职,他们又如果世界大战不可避免,也要尽可能晚参战德国发起两次世界大战,两次都被打趴下。从军工科技的角度上看,德国在一战二战中无疑都是世界第一。但是即便拥有先进科技,在关乎国家生死存亡的大规模战争中,也经不起对手长时间的消耗。而二四川省的区划变动,18个地级市之一,资阳市为何有3个区县?在之前的文章中给大家介绍了很多城市的区划变迁调整,每个城市的区划调整在历史上都是有迹可循的,因为我国的历史悠久,这样的变迁过程是非常的复杂的,今天给大家说一下四川省资阳市的区划调整她是清宫中最特殊的存在,13岁嫁44岁皇帝得独宠,接连生下四子女我们现在提倡男女平等,女性如今大部分都有自己的工作,收入也并不比男性低,所以女性在现代已经不算是弱者。但是我们中国五千多年历史中,封建王朝时期女性的社会地位极低,终其一生都是男人的张学良晚年坦言杀杨宇霆之前我从不迷信,杀他后我不得不信1931年9月18日,918事变爆发,这是令所有中国人感到耻辱的日子!日本兵占领东三省如探囊取物一般容易,他们先是占领弹药库,又是占领北大营,而我们东北军在干什么呢?民谣唱曰中国部python爬虫之多线程threading多进程协程aiohttp批量下载图片一单线程常规下载常规单线程执行脚本爬取壁纸图片,只爬取一页的图片。importdatetimeimportreimportrequestsfrombs4importBeautifu
中国女排3度输意大利,双核拖后腿,蔡斌不满,李盈莹留遗憾目前中国女排在世锦赛的比赛已经落下帷幕,最终非常遗憾以1比3大比分输给了意大利女排。在之前世联赛中,中国女排曾经惨败对手,而在后续16强的复赛中再度输给对手,这一次再度惨败之后,中巨星隐患终于爆发,姆巴佩现在后悔晚了吗?本赛季,绝代双骄总有一个要失意。当梅西与小老弟内马尔找回昔日的化学反应,他也在王子公园频频建功,重现球王风采。C罗虽然达成了职业生涯700球成就,但本赛季作为替补的效率不尽人意,令42分8记三分!全联盟备受质疑,加盟湖人涅槃重生,詹眉等你起飞因为洛杉矶湖人队上赛季没有打进季后赛,所以美媒NBA专家团都不看好湖人队新赛季的阵容和实力。今夏休赛期,湖人队其实已经在全面改变教练组大换血,新任主教练哈姆还帮威少做转型,帮助威少马龙缺阵,樊振东落选,国际乒联公布国乒名单,双核无缘再战张本最近国乒在马龙以及樊振东两位核心的带领之下,再度打败各路强敌,分别把日本以及德国队斩落马下,站上最高领奖台拿到男团的冠军。而且这一次男团取得了历史上的十连冠,是非常了不起的成绩。在CBA三消息山西广厦达成交易,比斯利脾气不改,阿不都休息一周大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!山西队这个休赛期发生了不少球员离队的事情,其中有些球员是山西队主动放弃掉的,也有一些球员是自己想要离开球队,总而言之,现在的世界女篮排名公布,中国队名次有变化!瑞士当地时间10月10日,国际篮联公布了最新一期的女篮世界排名。凭借在刚刚结束的女篮世界杯中的优异表现,中国女篮的排名上升5位,以676。5分跃居世界第二。美国女篮和澳大利亚女篮分剑指第15冠,丁俊晖41轻取火箭终结者,第三轮或迎战赵心童北京时间10月12号,苏格兰公开赛第三个比赛日结束,在前三天的比赛里中国军团共取得6胜5负的战绩,丁俊晖在昨晚首轮与灭火器斯莱瑟的比赛中发挥出色(面对火箭2胜1负),轰出两杆破百以欧冠四轮后,出线形势分析,6队已提前出线A组,没有悬念,那不勒斯利物浦本轮大胜后已铁定出线。后面两轮两队争小组头名。由于首回合那不勒斯41大胜利物浦,因此,只要那不勒斯下场胜格拉斯哥流浪者,最后1轮不输利物浦3个,那不勒没有目标方向,是大多数的人生网上流行一个鸡汤文案没有方向的努力都是浪费。我对此不是很认同1目测大多数人对于自己的人生都是没有方向的,但即便是无目的的努力,也不全是年化的虚掷,就像快乐和痛苦的关系一样,没有衬托前端未来几年的发展方向是什么?想要了解一门编程语言的未来发展方向,首先我们要了解这门语言是什么以及目前的发展状况,才能更好地分析和预测它的未来发展前景。首先前端是什么?我们在PC端或者手机端看到的界面,安装的程A股方向明朗了,大动作将至?炒股,行情总是在所有人都不看好时,在沉默中爆发,在亢奋中熄火。这个位置的A股,充满了期待,无论是估值,还是位置,以及情绪。这个市场,大多数投资者永远是错的,所以少数人盈利了。底部非