PyQt6 QTableWidget表格控件

锋哥原创的PyQt6视频教程:

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计50条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~、第2讲 PyQt6库和工具库QTDesigner安装与配置、第3讲 PyQt6第一个程序HelloWorld实现等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV11C4y1P7fj/

PyQt6提供了两种表格控件,分别是TableWidget和TableView,其中,TableView是基于模型的,它是TableWidget的父类,使用TableView时,首先需要建立模型,然后再保存数据;而TableWidget是TableView的升级版本,它已经内置了一个数据存储模型QTableWidgetItem,我们在使用时,不必自己建立模型,而直接使用setItem()方法即可添加数据。所以在实际开发时,推荐使用TableWidget控件作为表格。

由于QTableWidget类继承自QTableView,因此,它具有QTableView的所有公共方法,另外,它还提供了一些自身特有的方法。

QTableWidget类的常用方法:

方法说明
setRowCount()设置表格的行数
setColumnCount()设置表格的列数
setHorizontalHeaderLabels()设置表格中的水平标题名称
setVerticalHeaderLabels()设置表格中的垂直标题名称
setltem()设置每个单元格中的内容
setCellWidget()设置单元格的内容为QWidget控件
resizeColumnsToContents()使表格的列的宽度跟随内容改变
resizeRowsToContents()使表格的行的高度跟随内容改变
setEditTriggers()设置表格是否可以编辑,取值如下。 QAbstractltem View.NoEditTriggers0No:不能编辑表格内容; QAbstractItemView.CurrentChanged1Editing:允许对单元格进行编辑; QAbstractItemView.DoubleClicked2Editing:双击时可以编辑单元格; QAbstractItemView.SelectedClicked4Editing:单击时可以编辑单元格; QAbstractItemView.EditKeyPressed8Editing:按修改键时可以编辑单元格; QAbstractItemView.AnyKeyPressed16Editing:按任意键都可以编辑单元格
setSpan()合并单元格,该方法的4个参数如下。 row:要改变的单元格的行索引; column:要改变的单元格的列索引; rowSpanCount:需要合并的行数; columnSpanCount:需要合并的列数
setShowGrid()设置是否显示网格线,默认不显示
setSelectionBehavior()设置表格的选择行为,取值如下。 QAbstractItemView.SelectItemsOSelecting:选中当前单元格; QAbstractItemView.SelectRows1Selecting:选中整行; QAbstractItem View.DoubleClicked2Editing:选中整列
setTextAlignment()设置单元格内文字的对齐方式,取值如下。 Qt.AlignLeft:与单元格左边缘对齐; Qt.AlignRight:与单元格右边缘对齐; Qt.AlignHCenter:单元格内水平居中对齐; Qt.AlignJustify:单元格内两端对齐; Qt.AlignTop:与单元格顶部边缘对齐; Qt.AlignBottom:与单元格底部边缘对齐; Ot.Align VCenter:单元格内垂直居中对齐
setAlternatingRowColors()设置表格颜色交错显示
setColumnWidth()设置单元格的宽度
setRowHeight()设置单元格的高度
sortItems()设置单元格内容的排序方式,取值如下。 Qt.DescendingOrder:降序; Qt.AscendingOrder:升序
rowCount()获取表格中的行数
columnCount()获取表格中的列数
verticalHeader()获取表格的垂直标题头
horizontalHeader()获取表格的水平标题头

QTableWidgetItem类表示QTableWidget中的单元格,一个表格就是由多个单元格组成的。

QTableWidgetItem类的常用方法:

方法说明
setText()设置单元格的文本
setCheckState()设置指定单元格的选中状态,取值如下。 Qt.Checked:单元格选中; Qt.Unchecked:单元格未选中
setIcon()为单元格设置图标
setBackground()设置单元格的背景色
setForeground()设置单元格内文本的颜色
setFont()设置单元格内文本的字体
text()获取单元格的文本

如果没学过Pymsql的,可以先学习下:2024 1小时学会 Python操作Mysql数据库之pymysql模块技术(无废话版)_哔哩哔哩_bilibili

先准备sql数据脚本:

CREATE DATABASE /*!32312 IF NOT EXISTS*/`db_pyqt6` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `db_pyqt6`;/*Table structure for table `t_book` */DROP TABLE IF EXISTS `t_book`;CREATE TABLE `t_book` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(100) DEFAULT NULL COMMENT '书名',`type` varchar(100) DEFAULT NULL COMMENT '图书类别',`author` varchar(20) DEFAULT NULL COMMENT '作者',`publishDate` date DEFAULT NULL COMMENT '出版日期',`price` decimal(6,2) DEFAULT NULL COMMENT '价格',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;/*Data for the table `t_book` */insert  into `t_book`(`id`,`name`,`type`,`author`,`publishDate`,`price`) values (1,'零基础学Python','Python','小明','2022-12-13','30.12'),(2,'Python编程 从入门到实践 第3版','Python','埃里克·马瑟斯','2022-12-12','50.12'),(3,'利用Python进行数据分析(原书第2版)','Python','韦斯·麦金尼','2021-12-12','150.32'),(4,'Python数据分析从入门到实践','Python','高春艳 刘志铭','2020-01-12','100.00'),(5,'Python编程快速上手 让繁琐工作自动化 第2版','Python','阿尔·斯维加特','2019-01-12','44.50');

UI生成代码:

from PyQt6 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(528, 330)self.tableWidget = QtWidgets.QTableWidget(parent=Form)self.tableWidget.setGeometry(QtCore.QRect(20, 10, 481, 291))self.tableWidget.setObjectName("tableWidget")self.tableWidget.setColumnCount(0)self.tableWidget.setRowCount(0)self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))

Main测试代码:

"""python加载ui文件作者 : 小锋老师官网 : www.python222.com
"""
import sysfrom PyQt6.QtCore import Qt
from PyQt6.QtGui import QPalette, QBrush, QColor, QIcon
from PyQt6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QAbstractItemView, QComboBox
from PyQt6 import uic
from pymysql import Connectionif __name__ == '__main__':app = QApplication(sys.argv)ui = uic.loadUi("./QTableWidget表格控件.ui")table: QTableWidget = ui.tableWidget# 创建数据库连接con = Connection(host="localhost",  # 主机名port=3306,  # 端口user="root",  # 账户password="123456",  # 密码database="db_pyqt6"  # 指定操作的数据库)# 获取游标对象cursor = con.cursor()# 使用游标对象,执行sql语句cursor.execute("select * from t_book")# 获取查询所有结果result = cursor.fetchall()row = cursor.rowcount  # 获取记录个数,用于设置表格的行数vol = len(result[0])  # 获取字段数 用于设置表格的列数con.close()table.setRowCount(row)table.setColumnCount(vol)table.setHorizontalHeaderLabels(['编号', '书名', '类别', '作者', '出版日期', '价格'])for i in range(row):for j in range(vol):if j == 5:data = QTableWidgetItem(QIcon("rmb.png"), str(result[i][j]))  # 在指定列中显示图片else:data = QTableWidgetItem(str(result[i][j]))if j == 2:comobox = QComboBox()comobox.addItems(['Python', 'Java', "Go"])comobox.setCurrentIndex(0)table.setCellWidget(i, j, comobox)else:data.setForeground(QBrush(QColor("red")))  # 设置文本颜色data.setBackground(QBrush(QColor("yellow")))  # 设置背景颜色table.setItem(i, j, data)table.resizeColumnsToContents()  # 设置列宽跟随内容改变table.resizeRowsToContents()  # 使行高度跟随内容改变table.setAlternatingRowColors(True)  # 使表格颜色交错显示table.verticalHeader().setVisible(False)  # 隐藏垂直标题 序号table.horizontalHeader().setStretchLastSection(True)  # 设置最后一列自动填充容器table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)  # 禁止编辑单元格# table.sortItems(4, Qt.SortOrder.DescendingOrder)  # 设置指定列的排序方式# table.setSpan(2, 4, 2, 2)  # 合并指定单元格ui.show()sys.exit(app.exec())

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

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

相关文章

JavaWeb笔记之前端开发HTML

一、引言 1.1HTML概念 网页,是网站中的一个页面,通常是网页是构成网站的基本元素,是承载各种网站应用的平台。通俗的说,网站就是由网页组成的。通常我们看到的网页都是以htm或html后缀结尾的文件,俗称 HTML文件。 …

Opencv入门6(读取彩色视频并转换为对数极坐标视频)

源码如下&#xff1a; #include <opencv2/opencv.hpp> #include <iostream> int main(int argc, char* argv[]) { cv::namedWindow("Example2_11", cv::WINDOW_AUTOSIZE); cv::namedWindow("Log_Polar", cv::WINDOW_AUTOSIZE); c…

互联网的演进与未来展望:一代、二代、三代互联网的发展之路

导言 从诞生至今&#xff0c;互联网已经经历了一代、二代、三代的演变。本文将深入研究这三个互联网时代的发展过程、遇到的问题、解决的过程&#xff0c;以及未来的可用范围&#xff0c;同时考察各国在互联网应用上的状况和未来的研究趋势。还将探讨在哪个方向能够取胜&#x…

LeetCode 取经之路——第三题-无重复长度的最长子串

&#x1f389;&#x1f389;&#x1f389;今天给大家分享的是一道滑动窗口的OJ题。 3.无重复长度的最长子串 &#x1f61b;&#x1f61b;&#x1f61b;希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; 动动…

【开源软件】最好的开源软件-2023-第四名 vaadin

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

[电子榨菜] js中的闭包closure

0.写在前面: 下学期就打算去实习了,这段时间要密集接收考试和面试的捶打,计网和软工就没有办法为大家继续贡献开源内容了,明年九月份之前的更新内容将会以前端,人工智能,和工程设计为基础, 很抱歉啦,不过我还是希望我这一年来的努力可以帮到一些人.虽然自己这一年过的浑浑噩噩…

2023/12/20 work

1. 使用select完成TCP客户端程序 2. 使用poll完成TCP并发服务器 3. 思维导图

docker搭建mysql8.0.32,实现主从复制(一主两从)

安装docker的步骤、使用命令就不写了&#xff0c;本文章是基于会使用docker、linux基本命令的基础上来写的。 开始步骤&#xff1a; 1. 拉取 mysql 镜像 docker pull mysql:8.0.32 2. 启动容器并运行mysql a. 准备mysql的配置文件&#xff08;该配置文件是&#xff1a;mysq…

神经网络:池化层知识点

1.CNN中池化的作用 池化层的作用是对感受野内的特征进行选择&#xff0c;提取区域内最具代表性的特征&#xff0c;能够有效地减少输出特征数量&#xff0c;进而减少模型参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling)&a…

Kafka消费者组

消费者总体工作流程 Consumer Group&#xff08;CG&#xff09;&#xff1a;消费者组&#xff0c;由多个consumer组成。形成一个消费者组的条件&#xff0c;是所有消费者的groupid相同。 • 消费者组内每个消费者负责消费不同分区的数据&#xff0c;一个分区只能由一个组内消费…

【设计模式--结构型--代理模式】

设计模式--结构型--代理模式 代理模式概述结构静态代理案例&#xff1a;卖车票jdk动态代理cglib代理三种代理对比优缺点使用场景 代理模式 概述 由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0…

FFmepeg——视频处理工具安装以及简单命令学习。

FFmpeg 是一个免费、开源且高度可定制的多媒体处理工具&#xff0c;它是一个强大的跨平台框架&#xff0c;用于处理音频、视频、多媒体流和图像。FFmpeg 的主要功能包括解码、编码、转码、流处理、多路复用、分离、合并、过滤等&#xff0c;支持多种音视频格式&#xff0c;包括…

【精简】mysql创建自定义函数 sql写法举例

一&#xff0c;举例的sql是查询 某个时间点某个币种的汇率 create function get_rate(idate date,CURRENCY varchar(32)) returns decimal(21,6) begin declare res decimal(21,6) default 1;selec rate into resfromt_exchangerate tewhere ratedate idateand CURRENCYID C…

SQL进阶理论篇(十三):数据库的查询优化器是什么?

文章目录 简介什么是查询优化器查询优化器的两种优化方式总结参考文献 简介 事务可以让数据库在增删改查的过程中&#xff0c;保证数据的正确性和安全性&#xff0c;而索引可以帮数据库提升数据的查找效率。查询优化器&#xff0c;则是帮助我们获取更高的SQL查询性能。 本节我…

具有超低功耗性能的R7F102GAC3CSP、R7F102GAC2DSP、R7F102G6C3CSP RL78/G22微控制器 16-bit MCU

RL78/G22 简介&#xff1a; 除了具有低电流消耗&#xff08;CPU工作时&#xff1a;37.5μA/MHz&#xff1b;STOP时&#xff1a;200nA&#xff09;外&#xff0c;RL78/G22微控制器还配备了丰富的电容触摸通道。完备的16-48引脚封装和32KB-64KB闪存&#xff0c;扩充了新一代RL78…

Java如何开发PC客户端(Windows,Mac,Linux)

项目编译工具&#xff1a;Gradle开发工具&#xff1a; Idea开发语言&#xff1a; 建议java17以上ui组件&#xff1a;openjfx (org.openjfx.javafxplugin)打包工具: jpackage (org.beryx.jlink) 一、如何解决打包问题 java 14以后&#xff0c;有了jpackage工具&#xff0c;能够…

计算机网络 运输层上 | 运输层概述 UDP协议 端口 套接字

文章目录 1 运输层概述1.1 运输层存在的意义1.2 运输层协议概述1.3 主要端口号 2 运输层主要协议 UDP2.1 UDP的特点2.2 UDP首部格式2.3 UDP工作流 1 运输层概述 1.1 运输层存在的意义 之前我们讲网络层的时候&#xff0c;已经可以将信息从一个主机传递到另一个主机了。 那么…

校园圈子交友系统,APP小程序H5,三端源码交付,支持二开!实名认证,大V认证,地图找伴,二手平台!

校园圈子交友系统&#xff0c;是属于自主定义开发的系统&#xff0c;内容有很多&#xff0c;先截取一些给大家看看&#xff0c;让大家更多的了解本系统&#xff0c;然后再做评价&#xff01; 校园后端下载地址&#xff1a;校园圈子系统小程序&#xff0c;校园拼车&#xff0c;校…

XM平台官网开户注册流程图解

注册前准备 在进行XM外汇官网注册之前&#xff0c;首先需要准备必要的信息&#xff0c;包括个人身份信息、联系方式以及相关财务信息。确保这些信息的准确性是保证注册流程顺利进行的关键。 一、要访问XM外汇官方网站&#xff0c;首先打开您的浏览器。在浏览器的地址栏中输入…

数据分析基础之《numpy(6)—合并与分割》

了解即可&#xff0c;用panads 一、作用 实现数据的切分和合并&#xff0c;将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […