PyQt5中的QTablewidget

环境 PyQt5 + VSCode

Qt Designer生成界面

在VSCode的资源管理器中,右键选择 PYQT:New Form,打开Qt Designer
在这里插入图片描述
选择新建Dialog without Buttons,点击 创建
在这里插入图片描述
在左侧的Item Widgets中将 Table Widget拖入Dialog窗体中。
在这里插入图片描述
得到界面
在这里插入图片描述
将文件保存为tablewidget1.ui。
在VSCode中,右键点击文件tablewidget1.ui, 选Compile From,
在这里插入图片描述

得到Ui_tablewidget1.py文件。
在这里插入图片描述

运行

新建tablewidget1.py文件。
tablewidget1.py 内容如下

from Ui_tablewidget import Ui_Dialog
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QTableWidgetItem, QAbstractItemViewclass MyDialog(QtWidgets.QDialog,  Ui_Dialog):def __init__(self,  parent=None): super().__init__(parent)self.setupUi(self)self.setWindowTitle("表格")self.tableWidget.setRowCount(10)#设置表格的行数self.tableWidget.setColumnCount(2)#设置表格的列数self.tableWidget.setColumnWidth(0,80)#设置第0列的宽度self.tableWidget.setColumnWidth(1,100)#设置第1列的宽度self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)#选中整行模式self.tableWidget.setHorizontalHeaderLabels(['姓名','班别']) #水平标题names = ['小天','小米','小云','小月','小芳','小贝','小美','小亮','小欢','小阳']classes = ['一班','一班','一班','二班','二班','二班','二班','三班','三班','三班']i = 0for item in names:self.tableWidget.setItem(i,0, QTableWidgetItem(item))#添加内容到表格中self.tableWidget.setItem(i,1, QTableWidgetItem(classes[i]))#添加内容到表格中i += 1self.tableWidget.cellClicked.connect(self.tw_cell_clicked)#单击时触发def tw_cell_clicked(self):row = self.tableWidget.currentRow()#获取当前选中的行column = self.tableWidget.currentColumn()#获取挡墙选中的列t = self.tableWidget.item(row,0).text()#获取指定行、第0列的内容print(t)if __name__=="__main__":app = QApplication([])dialog = MyDialog()dialog.exec_()

按F5运行,得到
在这里插入图片描述

点击单元格时,控制台会显示当前行的第一列内容
在这里插入图片描述
方法

tableWidget.setRowCount(row_num)#设置表格的行数 
tableWidget.setColumnCount(col_num)#设置表格的列数 tableWidget.resizeColumnsToContents()#根据列内容设置列宽 
tableWidget.resizeRowsToContents()#根据行内容设置行高 
tableWidget.setColumnWidth(int column,int width)#设置某列的宽度 
tableWidget.setRowHeight(int row,int height)#设置某行的行高tableWidget.setHorizontalHeaderLabels(['姓名','邮件','电话'])#水平表头
tableWidget.setVerticalHeaderLabels(['一','二','三'])#垂直表头tableWidget.columnCount()#获取当前表格列数 
tableWidget.rowCount()#获取当前表格行数from PyQt5.QtWidgets import QTableWidgetItem 
tableWidget.setItem(0,0, QTableWidgetItem("小天"))#添加元素到0行0列tableWidget.item(row,col).text() #获取某行,列中的内容tableWidget.currentColumn()#获取当前选中的列 ,未选中时显示-1
tableWidget.currentRow()#获取当前选中的行,未选中时显示-1# 设置选中 
selectedItem = tableWidget.item(0, 0)#获取0行0列的元素
tableWidget.setCurrentItem(selectedItem)#设置选中0行0列from PyQt5.QtWidgets import QAbstractItemView 
tableWidget.setSelectionBehavior(QAbstractItemView.SelectColumns)#设置为选择整列 
tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)#设置选择整行 
tableWidget.setSelectionBehavior(QAbstractItemView.SelectItems)#设置选择单个单元格#设置为item不可被编辑
from PyQt5.QtCore import Qt
item = QTableWidgetItem("123") 
item.setFlags(item.flags() & ~Qt.ItemIsEditable) #Qt.ItemIsEditable可编辑 ~Qt.ItemIsEditable不可编辑
tableWidget.setItem(0,0, item ) #item放入0行0列

信号

信号内容
cellClicked单击时
cellDoubleClicked双击时
itemChanged项目发生改变时

滚动条

方法

方法内容
vertical_scrollbar = table_widget.verticalScrollBar()获取垂直滚动条
horizontal_scrollbar = table_widget.horizontalScrollBar()获取水平滚动条
vertical_position = vertical_scrollbar.value()获取垂直滚动条的位置
horizontal_position = horizontal_scrollbar.value()获取水平滚动条的位置
vertical_scrollbar.setValue(vertical_position)设置垂直滚动条的位置
horizontal_scrollbar.setValue(horizontal_position)设置水平滚动条的位置

对于垂直滚动条,位置是最上方显示的行的行数(行数从0开始);对于水平滚动条,位置是最左边显示的列的列数(列数从0开始)

滚动条的信号

信号内容
valueChanged当位置改变时
from Ui_tablewidget import Ui_Dialog
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QTableWidgetItem
from PyQt5.QtWidgets import QAbstractItemView
class MyDialog(QtWidgets.QDialog,  Ui_Dialog):def __init__(self,  parent=None):super().__init__(parent)self.setupUi(self)self.setWindowTitle("表格")self.tableWidget.setRowCount(10)self.tableWidget.setColumnCount(2)self.tableWidget.setColumnWidth(0,80)self.tableWidget.setColumnWidth(1,100)self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)self.tableWidget.setHorizontalHeaderLabels(['姓名','班别'])names = ['小天','小米','小云','小月','小芳','小贝','小美','小亮','小欢','小阳']classes = ['一班','一班','一班','二班','二班','二班','二班','三班','三班','三班']i = 0for item in names:self.tableWidget.setItem(i,0, QTableWidgetItem(item))self.tableWidget.setItem(i,1, QTableWidgetItem(classes[i]))i += 1self.vertical_scrollbar = self.tableWidget.verticalScrollBar()#获取垂直的滚动条self.vertical_scrollbar.valueChanged.connect(self.on_vertical_scrollbar_changed)#滚动条的值改变时触发def on_vertical_scrollbar_changed(self):value = self.vertical_scrollbar.value()#获取滚动条的值print(value)if __name__=="__main__":app = QApplication([])dialog = MyDialog()dialog.exec_()

按F5运行,拖动滚动条时,控制台显示滚动条的位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/3877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CH4INRULZ-v1靶机练习实践报告

CH4INRULZ-v1靶机练习实践报告 1 安装靶机 靶机是.ova文件,需要用VirtualBox打开,但我习惯于使用VMWare,因此修改靶机文件,使其适用于VMWare打开。 解压ova文件,得到.ovf文件和.vmdk文件。直接用VMWare打开.ovf文件即可。 2 夺…

Oceanbase体验之(一)运维管理工具OCP部署(社区版4.2.2)

资源规划建议 ocp主机1台 内存:64G CPU1:2C及以上 硬盘大于500G observer服务器3台 内存32G CPU:4C以上 硬盘大于1T 建议存储硬盘与操作系统硬盘隔开实现IO隔离 一、OBD、OCP安装包准备 [rootobserver /]# chown -R admin:admin /software/ [rootobserver /]# …

四:物联网ARM开发

一:ARM体系结构概述 1:控制外设led灯还有一些按键这些就要用到gpio,采集传感器的数据需要adc进行转化数据格式,特殊的外设和传感器是通过特殊的协议接口去进行连接的比如一些轴传感器和主控器的连接是通过spi,IIC 控制…

更新!!!Unity移动端游戏性能优化简谱

UWA官方出品,结合多年优化经验撰写了《Unity移动端游戏性能优化简谱》,文章从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能检测工…

(MSFT.O)微软2024财年Q3营收619亿美元

在科技的浩渺宇宙中,一颗璀璨星辰再度闪耀其光芒——(MSFT.O)微软公司于2024财政年度第三季展现出惊人的财务表现,实现总营业收入达到令人咋舌的6190亿美元。这一辉煌成就不仅突显了微软作为全球技术领导者之一的地位,更引发了业界内外对这家…

AIX7环境上一次艰难的Oracle打补丁经历

系统环境 AIX :7200-05-03-2148 Oracle:11.2.0.4 PSU: 11.2.0.4.201020(31718723) perl:5.28 问题一:AUTO patch #/u01/app/11.2.0/grid/OPatch/opatch auto /tmp/31718723 错误信息如下:匹配mos 2516761.1…

Kafka 3.x.x 入门到精通(05)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通(05)——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.5 存储消息2.6 消费消息2.6.1 消费消息的基本步骤2.6.2 消费消息的基本代码2.6.3 消费消息的基本原理2.6.3.1消费者组2.6.3.1.1 消费…

美国洛杉矶站群服务器如何提高网站排名?

美国洛杉矶站群服务器怎么样?美国洛杉矶站群服务器如何提高网站排名?Rak部落小编为您整理发布美国洛杉矶站群服务器如何提高网站排名? 美国洛杉矶站群服务器可以通过以下几种方式帮助提高网站排名: - **提升网站性能**:美国站群服务器通常配备高速CPU…

LLM学习笔记-5

目录 1.多层神经网络的实现2. 训练轮次示例3. 保存并加载模型4. 使用GPU加速训练5. 使用上面所教,进行一次训练 摘要:今天想整理一下Pytorch常用操作,以便以后进行预习(不是) 1.多层神经网络的实现 这是常用的操作&a…

Elcomsoft iOS Forensics Toolkit: iPhone/iPad/iPod 设备取证工具包

天津鸿萌科贸发展有限公司是 ElcomSoft 系列取证软件的授权代理商。 Elcomsoft iOS Forensics Toolkit 软件工具包适用于取证工作,对 iPhone、iPad 和 iPod Touch 设备执行完整文件系统和逻辑数据采集。对设备文件系统制作镜像,提取设备机密&#xff08…

阿斯达年代记三强争霸服务器没反应 安装中发生错误的解决方法

阿斯达年代记三强争霸服务器没反应 安装中发生错误的解决方法 最近刚上线的由影视剧改编的游戏《阿斯达年代记三强争霸》可谓是在游戏圈内引起了轩然大波,这是一款由网石集团与龙工作室联合开发的MMORPG游戏,游戏背景设定在一个名为阿斯大陆的区域&…

vue 实现项目进度甘特图

项目需求: 实现以1天、7天、30天为周期(周期根据筛选条件选择),展示每个项目不同里程碑任务进度。 项目在Vue-Gantt-chart: 使用Vue做数据控制的Gantt图表基础上进行了改造。 有需要的小伙伴也可以直接引入插件,自己…

用Scrapy编写第一个入门项目(基础四件套:spider,pipeline,setting,items)

简介:scrapy是一个用于爬取网页并提取数据的应用框架,也可用于提取API数据 写在前面:只想看scrapy的童鞋子请跳过5-7直接step8) step5,6是xpath和css入门,用于提取数据; step7是文件储存方式&…

国产麒麟系统下打包electron+vue项目(AppImage、deb)

需要用到的一些依赖包、安装包以及更详细的打包方法word以及麒麟官网给出的文档都已放网盘,链接在文章最后!!!!!!!!!!!!&a…

备考数通HCIE证书4点经验分享!

大家好,我是来自安阳工学院20级网络工程的刁同学,在2023年12月20日成功通过了华为Datacom HCIE认证,并且取得了笔试900多分,实验B的成绩。在此,我想把我的一些考证心得分享给正在备考的小伙伴们。 关于为什么考证 我…

使用自定义注解处理器,自动收集类信息

背景 在开发过程有些时候我们会需要收集一些类信息。比如要知道某个子类下的所有实现类。可以通过反射的方式实现。但是这种方法有性能问题,因为在运行时,所有类都会包含在dex文件中。这个文件中的类可能有几十万个。而且在实际开发中会发现&#xff0c…

ArcGIS专题图制作—3D峡谷地形

6分钟教你在ArcGIS Pro中优雅完成炫酷的美国大峡谷3D地图 6分钟教你在ArcGIS Pro中优雅完成炫酷的美国大峡谷3D地图。 这一期的制图教程将带我们走入美国大峡谷,让我们一起绘制这张美妙的地图吧!视频也上传到了B站,小伙伴可以去! …

数据结构与算法解题-20240426

这里写目录标题 面试题 08.04. 幂集367. 有效的完全平方数192. 统计词频747. 至少是其他数字两倍的最大数718. 最长重复子数组 面试题 08.04. 幂集 中等 幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。 说明:解集不能包含重复的子…

【网络原理】TCP协议的连接管理机制(三次握手和四次挥手)

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序(万字博文) 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制(CRC算法、MD5算法) 【网络…

Swift - 流程控制

文章目录 Swift - 流程控制if-else2. while3. for3.1 闭区间运算符3.2 半开区间运算符3.3 for - 区间运算符用在数组上3.3.1 单侧区间 3.4 区间类型3.5 带间隔的区间值 4. switch4.1 fallthrough4.2 switch注意点 5. 复合条件6. 区间匹配、元组匹配7. 值绑定8. where9. 标签语句…