专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

第21天 | 25天学会wxPython,高级组件之多项列表

ins518 2024-11-20 16:56:39 技术文章 14 ℃ 0 评论

列表组件wx.ListCtrl ,是一列条目的图形展示组件,可以同时展示多列数据,是一个非常常见和有用的窗口组件,它的三种不同使用格式,可以通过style进行指定,分别是报告视图wx.LC_REPORT、图标视图wx.LC_ICON和默认的列表视图wx.LC_LIST。

程序清单:list.py

import wx
import sys


# 继承Frame
class ListControl(wx.Frame):
    data = [("1949", "四月", "119"), ("1949", "五月", "104"),
            ("1949", "六月", "118"), ("1950", "四月", "133"),
            ("1950", "五月", "114"), ("1950", "六月", "140"),
            ("1951", "一月", "145"), ("1951", "三月", "178"),
            ("1951", "四月", "163"), ("1951", "五月", "172")]

    def __init__(self, *args, **kwargs):
        super(ListControl, self).__init__(*args, **kwargs)
        # 初始化窗口UI
        self.init_ui()

    def init_ui(self):
        # 面板
        panel = wx.Panel(self)
        # 多项列表
        list_ctrl = wx.ListCtrl(panel, id=wx.ID_ANY, size=(900, 500), 
                                style=wx.LC_REPORT)
        list_ctrl.InsertColumn(0, "年份", width=100)
        list_ctrl.InsertColumn(1, "月份", width=100)
        list_ctrl.InsertColumn(2, "飞行次数", wx.LIST_FORMAT_RIGHT, 120)
        for i in self.data:
            index = list_ctrl.InsertItem(sys.maxsize, i[0])
            list_ctrl.SetItem(index, 1, i[1])
            list_ctrl.SetItem(index, 2, i[2])
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.select_item, list_ctrl)
        self.SetSize(900, 500)
        self.SetTitle("列表的应用")
        self.Centre()
        self.Show(True)

    def select_item(self, e):
        list_ctrl = e.GetEventObject()
        index = e.GetIndex()
        # 选中所在行的数据
        col1 = list_ctrl.GetItemText(index, 0)
        col2 = list_ctrl.GetItemText(index, 1)
        col3 = list_ctrl.GetItemText(index, 2)
        print(col1, col2, col3)


def main():
    app = wx.App(False)
    ListControl(None)
    app.MainLoop()


if __name__ == "__main__":
    main()

运行程序之后,弹出的窗口如下:

用InsertColumn(col, heading, format=LIST_FORMAT_LEFT, width=LIST_AUTOSIZE)方法,可以单独控制每一列的宽度和格式,col指定列下标(从0开始);heading列的字符串内容,format内容对齐格式,默认为左对齐wx.LIST_FORMAT_LEFT,居中对齐为wx.LIST_

FORMAT_CENTER,居右对齐为wx.LIST_FORMAT_RIGHT;width指定列的宽度。

将数据插入到wx.ListCtrl中去,对每一行,调用InsertItem(index, label)方法,index为行号,label为字符串内容,使用sys.maxsize可以保证每次调用时插入的行在上次插入行之后,该方法返回行的索引值。通过SetItem(index, column, label , imageId=-1)方法可以在当前行的后续列中插入数据,index为行数,column为列的下标,label是字符串内容。

好了,高级组件之多项列表的内容就说到这了,关注我,下一节更精彩。

码字不易,你的关注和转发是对我最大的鼓励,谢谢!

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!

#python##程序员##好平台好讲师##桌面##热搜#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表