PyQt5 TableView组件
一、话不多说,先看图
本次要实现的是主窗口内添加widget组件,widget内设置成垂直盒布局,然后在布局中添加tableView、PushButton组件
二、看main函数
if __name__ == '__main__':app = QApplication(sys.argv)# 现在这创建 主窗口 (不然会闪退) 不然就继承mainWindow = QMainWindow()mainWindow.setWindowTitle('QMainWindow-QWidget-TableView 测试')mainWindow.resize(500, 400)# 一定要创建个实例出来 要有个 a 名字随便你取a = My_Window(mainWindow)sys.exit(app.exec_())
三、看自己写的 类 My_Window
class My_Window:def __init__(self, mainWindow):# 创建一个 widget 组件widget = QWidget()mainWindow.setCentralWidget(widget)# 创建一个垂直盒布局,并放在widget里面self.vboxlayout = QVBoxLayout(widget)# 函数调用 初始化 tableViewself.tableView_init()# 调用 button 组件初始化函数self.button_init()# 展示主窗口mainWindow.show()def button_init(self):# 创建一个按钮self.button = QPushButton('添加项')# 将按钮添加到垂直盒布局里self.vboxlayout.addWidget(self.button)# 按钮组件连接槽函数self.button.clicked.connect(self.tableView_add)# 创建一个按钮self.button1 = QPushButton('删除项')# 将按钮添加到垂直盒布局里self.vboxlayout.addWidget(self.button1)# 按钮组件连接槽函数self.button1.clicked.connect(self.tableView_del_low)# 创建一个按钮self.button3 = QPushButton('删除有项')# 将按钮添加到垂直盒布局里self.vboxlayout.addWidget(self.button3)# 按钮组件连接槽函数self.button3.clicked.connect(self.tableView_clear)def tableView_init(self):# 创建一个 0行3列 的标准模型self.model = QStandardItemModel(0, 3)# 设置表头标签self.model.setHorizontalHeaderLabels(['姓名', '年龄', '年薪'])# 创建 tableView 组件self.tableview = QTableView()# 将 tableView 添加到垂直盒布局里self.vboxlayout.addWidget(self.tableview)# tableView 组件 设置模型self.tableview.setModel(self.model)self.tableview.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 所有列自动拉伸,充满界面self.tableview.setSelectionMode(QAbstractItemView.SingleSelection) # 设置只能选中整行self.tableview.setEditTriggers(QTableView.NoEditTriggers) # 不可编辑self.tableview.setSelectionBehavior(QAbstractItemView.SelectRows) # 设置只能选中一行# self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) # 设置只能选中整行# self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection) # 设置只能选中多行def tableView_add(self):print('a')# 写全item1 = QStandardItem('%s' % '小朱')item2 = QStandardItem('%s' % '21')item3 = QStandardItem('%s' % '14w')print('b')self.model.appendRow([item1, item2, item3])print('c')# 简写self.model.appendRow([QStandardItem('%s' % '小明'),QStandardItem('%s' % '20'),QStandardItem('%s' % '15w'),])print('d')def tableView_del_low(self):index = self.tableview.currentIndex() # 取得当前选中行的indexself.model.removeRow(index.row()) # 通过index的row()操作得到行数进行删除def tableView_clear(self):# 会全部清空,包括那个标准表头self.model.clear()# 所以重新设置标准表头 自己将一下代码注释 尝试self.model.setHorizontalHeaderLabels(['姓名', '年龄', '年薪'])
四、完整代码
完整代码就是将 三和四 的代码复制到同一个python文件就行啦
五、关于TableView知识点
# 创建一个 0行3列 的标准模型 self.model = QStandardItemModel(0, 3) # 设置表头标签 self.model.setHorizontalHeaderLabels(['姓名', '年龄', '年薪'])
# 创建 tableView 组件 self.tableview = QTableView() # 将 tableView 添加到垂直盒布局里 self.vboxlayout.addWidget(self.tableview) # tableView 组件 设置模型 self.tableview.setModel(self.model)
self.tableview.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 所有列自动拉伸,充满界面 self.tableview.setSelectionMode(QAbstractItemView.SingleSelection) # 设置只能选中整行 self.tableview.setSelectionBehavior(QAbstractItemView.SelectRows) # 设置只能选中一行 self.tableview.setEditTriggers(QTableView.NoEditTriggers) # 不可编辑
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) # 设置只能选中整行 self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection) # 设置只能选中多行
index = self.tableview.currentIndex() # 取得当前选中行的index self.model.removeRow(index.row()) # 通过index的row()操作得到行数进行删除
# 会全部清空,包括那个标准表头 self.model.clear() # 所以重新设置标准表头 自己将一下代码注释 尝试 self.model.setHorizontalHeaderLabels(['姓名', '年龄', '年薪'])
不是唯一写法,有些我也还不知道 self.model.appendRow([QStandardItem('%s' % '小明'),QStandardItem('%s' % '20'),QStandardItem('%s' % '15w'), ])
PyQt5 TableView组件相关推荐
- PyQt5教程——组件 Ⅱ(八)
这部分的教程将会继续介绍PyQt5的组件.我们这节教程的内容将包括像素图(QPixmap),单行文本框(QLineEdit)和下拉列表框(QComboBox) 像素图(QPixmap) 像素图(QPi ...
- PyQt5 tableView 双击事件
PyQt5 tableView 双击事件 由于业务需求,需要实现teableview 双击加载数据,找了很久都没找到办法,在网上搜到了一篇关于重写双击事件的方法,试过了还是不行,后来自己不断尝试终于解 ...
- PyQt5教程——组件(7)
PyQt5中的组件(widgets) 组件(widgets)是构建一个应用的基础模块.PyQt5有广泛的各式各样的组件,包含按钮,复选按钮,滑块条,和列表框.在这个部分的教程中,我们将学习几种有用的组 ...
- PyQt5基本组件使用
接上一篇:PyQt5制作一个简单的登录界面 本文使用PyQt5中的基本组件实现一个界面. 先看一下效果图 代码如下: # PyQt基本组件"""Qt界面基本思路:1.容器 ...
- pyqt5 tableview 设置行颜色_Tools Ⅰ:如何用 PyQt5 和 Qt Designer 在 Pycharm 中愉快地开发软件...
本文使用 Zhihu On VSCode 创作并发布 转载自 两个轮子 的 CSDN https://blog.csdn.net/qq_40666028/article/details/8106987 ...
- PyQt5的一些组件的介绍
PyQt5的组件介绍 一.博客借鉴 二.部分组件的介绍 2.1 空白窗口演示 2.2 组件介绍 一.博客借鉴 pyqt5的基础介绍 二.部分组件的介绍 2.1 空白窗口演示 #!/usr/bin/en ...
- pyqt tableview大数据自动退出_JAVAFX之tableview界面实时刷新导致的内存溢出(自己挖的坑,爬着也要出来啊0.0)...
Linux编程点击右侧关注,免费入门到精通! 黑客技术点击右侧关注,了解黑客的世界! 作者丨队长给我球. https://www.cnblogs.com/JJJ1990/p/9111199.html ...
- 【数据库实验】《小型MIS的开发》PyQt5 开发 民航票务管理系统
PyQt5 开发 民航票务管理系统 为什么要拿 Python 做呢? 学习一天的知识点 开发环境 与 项目整体结构 数据库建表 用户表的 SQL 航班信息表的 SQL 界面代码 主界面:hello.p ...
- python QT designer tableview 滑条QScrollBar样式设置后失效解决方案
1.原因分析 QT designer tableview组件样式中不能直接设置滑条QScrollBar样式 2.解决方案 QT designer 创建 Scroll Area组件,并将tablevie ...
最新文章
- 产品经理岗位职责说明_技术负责人岗位职责,五大方面,超越岗位抓住未来才是技术大牛...
- 二分类突破AI技术壁垒
- AIX进程监控与管理
- vue axios POST请求中参数以form data和request payload形式的原因
- Linux 安装USB摄像头
- java逻辑量_java – 增量逻辑
- jqueryui手风琴_jQueryUI手风琴插件
- python超市管理系统实训报告_需求分析实验报告(小型超市管理系统)
- 5.1索引压缩-词项的统计特性(Heaps定律、Zipf定律)
- 用javascript实现一个打乱文字小程序
- 第十三届蓝桥杯大赛软件赛决赛(Java 大学B组)
- android m4a播放器,如何在android上解码m4a音频
- java 88 64位免安装_JAVA88
- 华为v30怎么升级鸿蒙系统,这四款华为手机可升级到鸿蒙系统,老机型居多,最低只需千元!...
- 百度地图 JavaScript API ios不能使用情况
- Islands UVA - 1665
- 环信IM集成问题整理——常见集成问题
- 2020语数英小学初中课程百度云学而思Python笔记
- 《CSDN 涨粉攻略》11个涨粉方法,你学会了几个?
- C/C++ 算法分析与设计:递归(年龄问题)