网站首页 > 技术文章 正文
列表组件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方面的干货了。赶紧来围观啊!!!
猜你喜欢
- 2024-11-20 前端入门——html 表单
- 2024-11-20 SpreadJS纯前端表格控件应用案例:项目投资收益管理系统
- 2024-11-20 零基础教你学前端——35、表单 input 控件中的按钮
- 2024-11-20 C# + Blazor Web入门实战:私人笔记(8)创建分类编辑组件
- 2024-11-20 使用纯前端类Excel表格控件SpreadJS构建企业现金流量表
- 2024-11-20 SpreadJS 纯前端表格控件应用场景:自动化实验报告
- 2024-11-20 SpreadJS 纯前端表格控件新特性 – 打印增强
- 2024-11-20 第27天 | 28天学会PyQt5,高级控件之QListWidget
- 2024-11-20 使用纯前端类Excel表格控件SpreadJS实现在线损益表应用
- 2024-11-20 第16天 | 25天学会wxPython,步进和滑块
你 发表评论:
欢迎- 07-10Oracle 与 Google Cloud 携手大幅扩展多云服务
- 07-10分享收藏的 oracle 11.2.0.4各平台的下载地址
- 07-10Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- 07-10Oracle Database@Azure 推进到南美等新区域并增加了新服务
- 07-10Oracle宣布推出 Oracle Database@AWS 的有限预览版
- 07-10Oracle与Nextcloud合作,推出主权云上的安全协作平台
- 07-10NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 07-10对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 602℃几个Oracle空值处理函数 oracle处理null值的函数
- 594℃Oracle分析函数之Lag和Lead()使用
- 582℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 579℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 574℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 567℃【数据统计分析】详解Oracle分组函数之CUBE
- 554℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 548℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- Oracle 与 Google Cloud 携手大幅扩展多云服务
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
- Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- Oracle Database@Azure 推进到南美等新区域并增加了新服务
- Oracle宣布推出 Oracle Database@AWS 的有限预览版
- Oracle与Nextcloud合作,推出主权云上的安全协作平台
- NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 解读丨《归档文件整理规则》— 电子文件元数据存储
- Data Guard跳归档恢复的实践(dataguard failover)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)