一、话不多说,先看图

本次要实现的是主窗口内添加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组件相关推荐

  1. PyQt5教程——组件 Ⅱ(八)

    这部分的教程将会继续介绍PyQt5的组件.我们这节教程的内容将包括像素图(QPixmap),单行文本框(QLineEdit)和下拉列表框(QComboBox) 像素图(QPixmap) 像素图(QPi ...

  2. PyQt5 tableView 双击事件

    PyQt5 tableView 双击事件 由于业务需求,需要实现teableview 双击加载数据,找了很久都没找到办法,在网上搜到了一篇关于重写双击事件的方法,试过了还是不行,后来自己不断尝试终于解 ...

  3. PyQt5教程——组件(7)

    PyQt5中的组件(widgets) 组件(widgets)是构建一个应用的基础模块.PyQt5有广泛的各式各样的组件,包含按钮,复选按钮,滑块条,和列表框.在这个部分的教程中,我们将学习几种有用的组 ...

  4. PyQt5基本组件使用

    接上一篇:PyQt5制作一个简单的登录界面 本文使用PyQt5中的基本组件实现一个界面. 先看一下效果图 代码如下: # PyQt基本组件"""Qt界面基本思路:1.容器 ...

  5. pyqt5 tableview 设置行颜色_Tools Ⅰ:如何用 PyQt5 和 Qt Designer 在 Pycharm 中愉快地开发软件...

    本文使用 Zhihu On VSCode 创作并发布 转载自 两个轮子 的 CSDN https://blog.csdn.net/qq_40666028/article/details/8106987 ...

  6. PyQt5的一些组件的介绍

    PyQt5的组件介绍 一.博客借鉴 二.部分组件的介绍 2.1 空白窗口演示 2.2 组件介绍 一.博客借鉴 pyqt5的基础介绍 二.部分组件的介绍 2.1 空白窗口演示 #!/usr/bin/en ...

  7. pyqt tableview大数据自动退出_JAVAFX之tableview界面实时刷新导致的内存溢出(自己挖的坑,爬着也要出来啊0.0)...

    Linux编程点击右侧关注,免费入门到精通! 黑客技术点击右侧关注,了解黑客的世界! 作者丨队长给我球. https://www.cnblogs.com/JJJ1990/p/9111199.html ...

  8. 【数据库实验】《小型MIS的开发》PyQt5 开发 民航票务管理系统

    PyQt5 开发 民航票务管理系统 为什么要拿 Python 做呢? 学习一天的知识点 开发环境 与 项目整体结构 数据库建表 用户表的 SQL 航班信息表的 SQL 界面代码 主界面:hello.p ...

  9. python QT designer tableview 滑条QScrollBar样式设置后失效解决方案

    1.原因分析 QT designer tableview组件样式中不能直接设置滑条QScrollBar样式 2.解决方案 QT designer 创建 Scroll Area组件,并将tablevie ...

最新文章

  1. 产品经理岗位职责说明_技术负责人岗位职责,五大方面,超越岗位抓住未来才是技术大牛...
  2. 二分类突破AI技术壁垒
  3. AIX进程监控与管理
  4. vue axios POST请求中参数以form data和request payload形式的原因
  5. Linux 安装USB摄像头
  6. java逻辑量_java – 增量逻辑
  7. jqueryui手风琴_jQueryUI手风琴插件
  8. python超市管理系统实训报告_需求分析实验报告(小型超市管理系统)
  9. 5.1索引压缩-词项的统计特性(Heaps定律、Zipf定律)
  10. 用javascript实现一个打乱文字小程序
  11. 第十三届蓝桥杯大赛软件赛决赛(Java 大学B组)
  12. android m4a播放器,如何在android上解码m4a音频
  13. java 88 64位免安装_JAVA88
  14. 华为v30怎么升级鸿蒙系统,这四款华为手机可升级到鸿蒙系统,老机型居多,最低只需千元!...
  15. 百度地图 JavaScript API ios不能使用情况
  16. Islands UVA - 1665
  17. 环信IM集成问题整理——常见集成问题
  18. 2020语数英小学初中课程百度云学而思Python笔记
  19. 《CSDN 涨粉攻略》11个涨粉方法,你学会了几个?
  20. C/C++ 算法分析与设计:递归(年龄问题)

热门文章

  1. [算法导论] 最大差值、最小差值
  2. 理解对方暴露服务的对象 Ingress 和 Service
  3. 内置超声波振动筛换能器振子设计
  4. 接触NodeJs的一周
  5. Android活动–从一个屏幕切换到另一个屏幕
  6. 对偶理论和灵敏度分析---线性规划的对偶理论
  7. python数据可视化库_python和r中用于数据可视化的前9个库
  8. 关于一个block中BN-ReLU-Conv的顺序问题
  9. 分枝定界法求哈密尔登回路问题的由表及里
  10. 上海交通大学计算机专业有调剂吗,上海交通大学计算机系2019年考研调剂信息...