首页 > 其他分享 >23.PyQt5【高级组件】表格组件-QTableWidget

23.PyQt5【高级组件】表格组件-QTableWidget

时间:2023-01-16 10:55:56浏览次数:47  
标签:单元格 表格 23 self QTableWidget item tableWidget 组件

一、前言

QTableWidget是常用的显示数据表格的控件,使用QTableWidget时就需要QTableWidgetItem。用来表示表格中的一个单元格,整个表格就是用各个单元格构建起来的。

二、学习目标

1.QTableWidget常用方法

2.QTableWidget常用信号

3.QTableWidget组件的应用

三、知识点

1.【QTableWidget、QTableWidgetItem常用方法】

  • QTableWidget常用方法

    方法 描述
    setRowCount(rows) 设置QTableWidget表格控件的行数
    setColumnCount(columns) 设置QTableWidget表格控件的列数
    setHorizontalHeaderLabels(labels) 设置QTableWidget表格控件的水平标签
    setVerticalHeaderLabels(labels) 设置QTableWidget表格控件的垂直标签
    setRowHeight(row) 设置单元格行的高度
    setColumnWidth(column) 设置单元格列的宽度
    setItem(row,column,item) 设置QTableWidgetItem给指定的行和列
    insertRow(row) 在行索引处插入行
    insertColumn(column) 在列索引处插入列
    removeRow(row) 在行索引处删除行
    removeColumn(column) 在列索引处删除列
    findItems(text,flags) 使用给定的标志查找文本与字符串文本匹配的项目
    setCellWidget(row,column,widget) 给指定行和列的单元格设置组件
    removeCellWidget(row,column) 删除指定行和列的单元格的组件
    item(row,column) 返回给定行和列的项目(如果已设置);否则返回None
    row(item) 返回该表格项的行索引
    column(item) 返回该表格项的列索引
    rowCount() 返回表格的所有行数
    columnCount() 返回表格的所有列数
    currentItem() 返回当前的表格项
    currentRow() 返回当前表格项的行索引
    currentColumn() 返回当前表格项的列索引
    selectedItems() 返回所有选定表格项的列表
    horizontalHeader().hide() 隐藏水平表头
    verticalHeader().hide() 隐藏垂直表头
    clear() 清除表格内容和表头
    clearContents() 清除表格内容
    setEditTriggers(triggers) 设置编辑规则
    QAbstractItemView.NoEditTriggers0No:不能对表格内容进行修改
    QAbstractItemView.CurrentChanged1Editing:任何时候都能对单元格进行修改
    QAbstractItemView.DoubleClicked2Editing:双击单元格
    QAbstractItemView.SelectedClicked4Editing:单击已经选中的内容
    QAbstractItemView.EditKeyPressed8Editing:当修改键按下时修改单元格
    QAbstractItemView.AnyKeyPressed16Editing:按任意键修改单元格
    QAbstractItemView.AllEditTriggers31Editing:包括以上所有条件
    setSelectionBehavior(behavior) 设置表格选择行为
    QAbstractItemView.SelectItems0Selecting:选中单个单元格
    QAbstractItemView.SelectRows1Selecting:选中一行
    QAbstractItemView.SelectColumns2Selecting:选中一列
  • QTableWidgetItem常用方法

    方法 描述
    checkState() 返回复选状态
    setCheckState(state) 设置复选框的勾选状态
    Qt.Checked:选中状态
    Qt.PartiallyChecked:半选中状态
    Qt.Unchecked:没有被选中
    icon() 返回列表项的图标
    setIcon(icon) 设置列表项的图标
    isHidden() 返回列表项是否隐藏,如果隐藏返回True;不隐藏返回False
    setHidden(hide) 设置列表项是否隐藏,如果True则隐藏;False则不隐藏
    text() 返回列表项的文本
    setText(text) 设置列表项的文本
    flags() 返回列表项的项目标志
    setForeground(brush) 设置前景色
    setBackground(brush) 设置背景色
    setFlags(flags) 设置列表项的项目标志设置为flags
    setTextAlignment(alignment) 单元格文本对齐方式
    Qt.AlignLeft:将单元格内的内容沿单元格的左边缘对齐
    Qt.AlignRight:将单元格内的内容沿单元格的右边缘对齐
    Qt.AlignHCenter:在可用空间中,居中显示在水平方向上
    Qt.AlignJustify:将文本在可用空间内对齐,默认从左到右
    Qt.AlignTop:与顶部对齐
    Qt.AlignBottom:与底部对齐
    Qt.AlignVCenter:在可用空间中,居中显示在垂直方向上
    Qt.AlignBaseline:与基线对齐

2.【QTableWidget常用信号】

信号 描述
itemClicked(item) 当单击表格中单元格时,发射此信号
itemDoubleClicked(item) 当双击表格中单元格时,发射此信号
itemChanged(item) 当改变表格中单元格时,发射此信号
itemEntered(item) 当鼠标光标进入表格的单元格时,发射此信号
itemPressed(item) 当鼠标在表格的单元格上按下时,发射此信号
itemSelectionChanged() 当选择的单元格发生改变时,发射此信号
cellClicked(row,column) 当单击表格中单元格时,发射此信号
cellDoubleClicked(row,column) 当双击表格中单元格时,发射此信号
cellEntered(row,column) 当鼠标光标进入表格的单元格时,发射此信号
cellPressed(row,column) 当鼠标在表格的单元格上按下时,发射此信号

3.【QTableWidget组件的应用】

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon, QBrush, QColor
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QTableWidget, QTableWidgetItem


class QmyWidget(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体
        self.setupUi()

    def setupUi(self):
        """页面初始化"""
        # 设置窗体大小及标题
        self.resize(500, 400)
        self.setWindowTitle("QTableWidget组件示例")
        # 创建布局
        self.layout = QVBoxLayout()

        # QTableWidget组件定义
        self.tableWidget = QTableWidget()
        # QTableWidget组件设置
        self.tableWidget.setRowCount(3)             # 给列表设置行数
        self.tableWidget.setColumnCount(3)          # 给表格设置列数
        self.tableWidget.setHorizontalHeaderLabels(["姓名", "性别", "体重"])   # 设置行标题
        self.tableWidget.setVerticalHeaderLabels(["a", "b", "c"])            # 设置列标题
        self.tableWidget.setRowHeight(0, 100)       # 设置第1行行宽100
        self.tableWidget.setColumnWidth(0, 100)     # 设置第1列列宽100
        # self.tableWidget.horizontalHeader().hide()  # 隐藏水平表头
        self.tableWidget.verticalHeader().hide()    # 隐藏垂直表头
        # 设置表格项
        for row in range(3):
            for col in range(3):
                item = QTableWidgetItem("第%d行 %d列" % (row, col))
                self.tableWidget.setItem(row, col, item)
        # 绑定信号
        self.tableWidget.itemChanged.connect(self.on_tableWidget_itemChanged)

        # 创建两个按钮组件
        self.button1 = QPushButton("插入行和列", self)
        self.button1.clicked.connect(self.insert_item)  # 为button绑定槽函数
        self.button2 = QPushButton("删除行和列", self)
        self.button2.clicked.connect(self.delete_item)   # 为button绑定槽函数
        self.button3 = QPushButton("查询单元格", self)
        self.button3.clicked.connect(self.select_item)    # 为button绑定槽函数

        # 将组件添加到布局中
        self.layout.addWidget(self.tableWidget)
        self.layout.addWidget(self.button1)
        self.layout.addWidget(self.button2)
        self.layout.addWidget(self.button3)
        # 为窗体添加布局
        self.setLayout(self.layout)

    def insert_item(self):
        """新增item槽函数"""
        print("item新增成功!")
        self.tableWidget.insertRow(0)
        self.tableWidget.insertColumn(0)

    def delete_item(self):
        """删除item槽函数"""
        print("item删除成功!")
        self.tableWidget.removeRow(0)
        self.tableWidget.removeColumn(0)

    def select_item(self):
        """查询item槽函数"""
        print("item查询成功!")
        # 查询第1行 1列并设置颜色
        item_list = self.tableWidget.findItems("第1行 1列", Qt.MatchContains | Qt.MatchRecursive)
        for item in item_list:
            item.setBackground(QBrush(QColor(0, 255, 0)))
            item.setForeground(QBrush(QColor(255, 0, 0)))

    def on_tableWidget_itemChanged(self, item):
        """槽函数"""
        print(item.text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myMain = QmyWidget()
    myMain.show()
    sys.exit(app.exec_())

标签:单元格,表格,23,self,QTableWidget,item,tableWidget,组件
From: https://www.cnblogs.com/ckxingchen/p/17054885.html

相关文章

  • 25.PyQt5【高级组件】选项卡-QTabWidget
    一、前言如果表单有太多需要同时显示的字段,可以将它们排列在不同的页面中,放置在选项卡式小部件的每个选项卡下。提供了一个标签栏和一个页面区域。显示第一个选项卡下的页......
  • 24.PyQt5【高级组件】树形组件-QTreeWidget
    一、前言QTreeWidget使用类似于QListView类的方式提供一种典型的基于item的树形交互方法类,该类基于QT的“模型/视图”结构,提供了默认的模型来支撑item的显示,这些i......
  • 26.PyQt5【高级组件】工具箱-QToolBox
    一、前言QToolBox控件提供了一个可进行一列选项卡操作方式,在每个选项卡内可包含不同的控件布局。QToolBox将选项卡一个一个地显示,当前项目显示在当前选项卡下方。每个选项......
  • 3.PyQt5【窗口组件】主窗口-QMainWindow
    一、前言QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围......
  • 4.PyQt5【布局组件】水平布局-QHBoxLayout
    一、前言QLayout是Qt中布局管理器的抽象基类,通过对QLayout的继承,实现了功能各异且互补的布局管理器。布局管理器不是界面组件,而是界面组件的定位策略;任意容器类型的组件都......
  • 5.PyQt5【布局组件】垂直布局-QVBoxLayout
    一、前言本节我们介绍布局组件中的垂直布局QVBoxLayout。二、学习目标1.QVBoxLayout垂直布局应用三、知识点1.【QVBoxLayout垂直布局应用】垂直布局将多个控件在垂直......
  • 6.PyQt5【布局组件】网格布局-QGridLayout
    一、前言本节我们介绍布局组件中的网格布局QGridLayout。二、学习目标1.QGridLayout网格布局的应用三、知识点1.【QGridLayout网格布局的应用】网格布局也称栅格布局......
  • 7.PyQt5【布局组件】表单布局-QFormLayout
    一、前言本节我们介绍布局组件中的表单布局QFormLayout。二、学习目标1.QFormLayout表单布局的应用三、知识点1.【QFormLayout表单布局的应用】表单布局以两列的形式......
  • 9.PyQt5【布局组件】区域分隔器-QSplitter
    一、前言本节我们介绍布局组件中的区域分隔器QSplitter。二、学习目标1.QSplitter区域分隔器的应用三、知识点1.【QSplitter区域分隔器的应用】QSplitter是一个带切......
  • 8.PyQt5【布局组件】容器布局-QGroupBox
    一、前言本节我们介绍布局组件中的容器布局QGroupBox。二、学习目标1.QGroupBox容器布局的应用三、知识点1.【QGroupBox容器布局的应用】容器布局将容器控件(Containe......