PyQt QTableWidget 表格控件的使用

这篇具有很好参考价值的文章主要介绍了PyQt QTableWidget 表格控件的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PyQT开发图形界面应用时,可用 QTableWidget 控件,以表格方式直观地显示二维表格形状的数据,如列表,数组、pandas DataFrame等。

如果你想用表格方式直接显示并操作数据库表时,选择 QTableView类更合适。

QTableWidget 代码实现步骤:

步骤如下:

  1. 生成QTableWidget对象
  2. 设置表头以及表格参数
  3. 构建 QTableWidgetItem 表格项对象,将表格项添加至表格中。
  4. 添加、删除行
  5. 通过 信号–槽 机制来操作数据

1. 生成QTableWidget对象

示例中,生成1个联系人表格,
创建1个QTableWidget对象

        # 创建 QTablewWidget对象,设置表头及参数
        self.table = QTableWidget(4,3,self)
        
        self.table.setHorizontalHeaderLabels(['姓名','邮件','电话'])

self.table = QTableWidget(4,3,self)
创建QTableWidget对象,尺寸为 4行 * 3列
也可以这样设置
table.setRowCount(4)
table.setColumnCount(3)

2. 设置表头与表格参数

self.table.setHorizontalHeaderLabels(['姓名','邮件','电话'])
设置表头
self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
由于第2列可能比较宽,设置第2列伸展

有的字段比较长,可以设置按内容设置列宽,按内容设置行高。

        self.table.resizeColumnsToContents()
        self.table.resizeRowsToContents()

self.table.setShowGrid(True)
显示网格线

3. 构建 QTableWidgetItem 表格项对象,将表格项添加至表格中

        self.table.setItem(0,0, QTableWidgetItem("张飞"))
        self.table.setItem(0,1, QTableWidgetItem("zhangfei@example.com"))
        self.table.setItem(0,2, QTableWidgetItem("021-3233288"))

表格项对应类为QTableWidgetItem,
QTableWidgetItem(“张飞”)
添加到表格中
self.table.setItem(0,2, QTableWidgetItem("021-3233288"))
表示,将指定表格项添加到第1行,第3列单元格。

默认int, float 型数值必须转换为字符串类型,才能显示。 表格项直接使用int型,采用下面方法

        item = QTableWidgetItem()
        item.setData(Qt.EditRole,55555555)
        self.table.setItem(3, 2, item)

4. 添加、删除行

我们采用了自定义的方式添加行

    def addTableRow(self, table, row_data):
        # 功能: 在末尾添加新行
        row = table.rowCount()
        table.setRowCount(row+1)
        col = 0
        for item in row_data:
            cell = QTableWidgetItem(str(item))
            table.setItem(row, col, cell)
            col += 1
        print(f"Added one row: {row_data}")
        print(f"totally, {row+1} rows")

删除行:
removeRow(10) , 即删除第11行

5. 通过 信号–槽 机制来操作数据

QTableWidgets 提供如下信号

def cellActivated (row, column)
def cellChanged (row, column)
def cellClicked (row, column)
def cellDoubleClicked (row, column)
def cellEntered (row, column)
def cellPressed (row, column)
def currentCellChanged (currentRow, currentColumn, previousRow, previousColumn)
def currentItemChanged (current, previous)
def itemActivated (item)
def itemChanged (item)
def itemClicked (item)
def itemDoubleClicked (item)
def itemEntered (item)
def itemPressed (item)
def itemSelectionChanged ()

内置Slot方法

def clear ()
def clearContents ()
def insertColumn (column)
def insertRow (row)
def removeColumn (column)
def removeRow (row)
def scrollToItem (item[, hint=EnsureVisible])

例,绑定单元格双击信号至slot方法 table_double_clicked
self.table.cellDoubleClicked.connect(self.table_double_clicked)

当然,你也可以自定义信号类型。

完整代码如下:

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
 
 
class MyWin(QWidget):
    def __init__(self):
        super().__init__()
        self.title = "PyQt5 TableWidget"
        self.top = 100
        self.left = 100
        self.width = 600
        self.height = 380
        self.InitWindow()
 
    def InitWindow(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.top, self.left, self.width, self.height)

        self.creatingTables()
        
        self.vBoxLayout = QVBoxLayout()
        self.vBoxLayout.addWidget(self.table)
        self.setLayout(self.vBoxLayout)      
 
        self.show()
 
    def creatingTables(self):
        # 创建 QTablewWidget对象,设置表头及参数
        self.table = QTableWidget(4,3,self)
        self.table.setShowGrid(True)
        self.table.setHorizontalHeaderLabels(('姓名','邮件','电话'  ))
        self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
        
        # 表格内容
        self.table.setItem(0,0, QTableWidgetItem("张飞"))
        self.table.setItem(0,1, QTableWidgetItem("zhangfei@example.com"))
        self.table.setItem(0,2, QTableWidgetItem("021-3233288"))
        
        self.table.setItem(1,0, QTableWidgetItem("李军"))
        self.table.setItem(1,1, QTableWidgetItem("lijun@example.com"))
        self.table.setItem(1,2, QTableWidgetItem("021-34334433"))
 
        self.table.setItem(2, 0, QTableWidgetItem("王小乙"))
        self.table.setItem(2, 1, QTableWidgetItem("wangxiaoyi@example.com"))
        self.table.setItem(2, 2, QTableWidgetItem("2232324"))
 
        self.table.setItem(3, 0, QTableWidgetItem("赵无忌"))
        self.table.setItem(3, 1, QTableWidgetItem("zhaowuji@example.com"))
        item = QTableWidgetItem()
        item.setData(Qt.EditRole,55555555)
        self.table.setItem(3, 2, item)

        # 添加1条新记录
        row_5 = ['钱晓芬',"xiaofengz@example.com","12343445" ]
        row_6 = ['孙涛','suntao@example.com','88888888']
        self.addTableRow(self.table, row_5)
        self.addTableRow(self.table, row_6)
        
        self.table.resizeColumnsToContents()
        self.table.resizeRowsToContents()
        
        self.table.cellDoubleClicked.connect(self.table_double_clicked)
 
        
    
    def addTableRow(self, table, row_data):
        # 功能: 在末尾添加新行
        row = table.rowCount()
        table.setRowCount(row+1)
        col = 0
        for item in row_data:
            cell = QTableWidgetItem(str(item))
            table.setItem(row, col, cell)
            col += 1
        print(f"Added one row: {row_data}")
        print(f"totally, {row+1} rows")

    def table_double_clicked(self,row,col):
        # 打印选中单元格的内容
        print(f" Value of cell ({row},{col}) is {self.table.item(row,col).text()}  ")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyWin()
    sys.exit(app.exec())

运行结果如下:
PyQt QTableWidget 表格控件的使用
终端输出

Added one row: ['钱晓芬', 'xiaofengz@example.com', '12343445']
totally, 5 rows
Added one row: ['孙涛', 'suntao@example.com', '88888888']
totally, 6 rows
 Value of cell (2,2) is 2232324  

:如果对单元格的显示外观,编辑方式有额外需求,如字段使用下拉列表,用星号图形表示评级字段值等,可以通过delegate类来实现,具体使用方式,请参考本人博客 通过实例代码来认识 Delegate 组件的强大功能
PyQt QTableWidget 表格控件的使用文章来源地址https://www.toymoban.com/news/detail-429625.html

到了这里,关于PyQt QTableWidget 表格控件的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于PyQt5的图形化界面开发——队列动画演示

    本文使用PyQt5制作图形化界面演示数据结构中的 队列 操作,与上一节队列动画相对应 基于PyQt5的图形化界面开发——队列动画演示 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:PyQt5 队列(Queue)是一种常用的数据结构,类似于现

    2024年02月07日
    浏览(45)
  • 基于PyQt5的图形化界面开发——自制ssh工具

    本节我们使用PyQt5来制作一个简单的ssh小工具。 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库: PyQt5 和 paramiko 本节需要安装第三方库PyQt5和paramiko,如果你并不熟悉第三方库的安装,你可以参考以下文章来学习: Python第三方库安装

    2024年02月06日
    浏览(31)
  • 基于PyQt5的图形化界面开发——模拟医院管理系统

    本节以医院管理系统为例,使用PyQt5模拟医院系统的功能。 本次用到的数据结构思想为队列,使用队列能够更真实的反映医院排队等候的情况(先挂号者先就诊),事实上 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:PyQt5 如果你

    2024年02月02日
    浏览(98)
  • 基于PyQt5的UI界面开发——对基本控件的介绍

    在PyQt中,控件是用户界面上的可见元素。控件可以包括按钮、标签、文本框、进度条等。每个控件都有自己的属性和方法,可以通过编程方式进行调整和操作。 以下是一些常用的PyQt控件: QLabel(标签):用于显示文本或图片的静态控件。 QPushButton(按钮):用于触发特定动

    2024年02月16日
    浏览(29)
  • 让QT中的Qtablewidget控件表格中的元素内容显示居中

    好了看最终的一个演示出来的效果吧  好了,就到这里,下次其他的我再继续更新吧,下面我附上一个类似的文章,写的也可以,有些我没有用到的分享出来你们也可以借鉴一下。 Qt中让tableWidget内容中的每个元素居中(qtablewidget的一些使用) - ww学习笔记 - 博客园

    2024年02月11日
    浏览(37)
  • pyqt 在tablewidget表格控件里添加 buttom按钮控件

       说明一下:在designer里!是没有办法再tablewidget的表格上添加其他控件了,按钮啊!标签啊!都不可以!你改样式表也没用! 所以只能再代码成面改了,你把.ui文件转成.py文件。在python文件里添加下面的代码就行!(要修改) 上面的代码都注释了,要改的会报错的,其他

    2024年02月13日
    浏览(24)
  • 界面开发(2)--- 使用PyQt5制作用户登陆界面

    上篇文章已经介绍了如何配置PyQt5环境,这篇文章在此基础上展开,主要记录一下如何使用 PyQt5 制作用户登陆界面,并对一些基础操作进行介绍。 下面是具体步骤,一起来看看吧! 1. 打开 Pycharm 中的 Qt Designer 工具。 2. 选择Main Window模式,创建界面窗口。 3. 移除菜单栏和状态

    2024年02月05日
    浏览(46)
  • 关于图形界面Pyqt与QT的区别选择

            关于图像界面(GUI)想必大家都并不陌生,想要将一段已经完善的功能列表进行可视化操作并且具有一定的操作空间,将功能可视化必不可少,一个好的可视化工具不仅可以集成一系列小的文件功能,还能将不同方法之间的调用联系起来,形成良好的系统整理功能。

    2023年04月13日
    浏览(73)
  • PyQT5: 构建图形用户界面的Python指南

    PyQt5是一个Python绑定的跨平台C++库,用于创建丰富的图形用户界面(GUI)。它是Qt库的Python接口,Qt库由Qt公司开发,用于开发GUI程序,也称作应用程序框架。在此,我们将详细介绍如何使用PyQt5创建图形用户界面。 在开始之前,我们需要确保已经在Python环境中安装了PyQt5。如果

    2024年02月13日
    浏览(41)
  • 如何设计和构建一个PyQt图形用户界面(GUI)

    欢迎来到PyQt的世界!设计和构建一个图形用户界面(GUI)可以是一项令人兴奋且有趣的任务。 首先,你需要确保已经安装了PyQt。如果你还没有安装,可以通过以下命令在你的Python环境中安装: 现在,让我们开始设计你的第一个PyQt GUI! 第一步:创建窗口 想象一下,如果你

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包