PyQt5 – QTableWidget

接下来我会为你详细讲解Python的PyQt5模块中的QTableWidget控件的完整使用攻略。

简介

QTableWidget是PyQt5中的一个常用控件,它可以用于显示数据表格,支持多行多列数据的展示。与QTableView相比,QTableWidget更加简单易用,不需要额外的代理模型,支持直接插入数据。

基本用法

创建QTableWidget

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem

# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())

以上示例中,我们首先导入了QApplicationQTableWidgetQTableWidgetItem模块,并创建了一个应用对象app和一个表格对象table。我们在创建表格对象时并没有指定维度和大小,这是在后面设置的。随后,通过show()方法显示窗口,并通过app.exec_()方法开启应用运行。

设置表格的行数、列数和大小

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem

# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 设置表格的行数、列数和大小
table.setColumnCount(3)
table.setRowCount(2)
table.setFixedSize(300, 200)

# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())

在以上示例中,我们在创建表格对象table后,使用setColumnCountsetRowCount可以分别设置表格的列数和行数。接下来,通过setFixedSize方法设置表格的大小为300*200。在设置完相关属性后,将表格通过show()方法显示在窗口中。

向表格中添加数据

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem

# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 设置表格的行数、列数和大小
table.setColumnCount(3)
table.setRowCount(2)
table.setFixedSize(300, 200)

# 向表格中添加数据
table.setItem(0, 0, QTableWidgetItem('1'))
table.setItem(0, 1, QTableWidgetItem('2'))
table.setItem(0, 2, QTableWidgetItem('3'))
table.setItem(1, 0, QTableWidgetItem('4'))
table.setItem(1, 1, QTableWidgetItem('5'))
table.setItem(1, 2, QTableWidgetItem('6'))

# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())

以上示例中,我们在设置完表格的行数、列数和大小后,通过setItem方法向表格中逐一添加数据。其中setItem(row, column, item)第一个参数为表格的行数,第二个参数为表格的列数,第三个参数为添加到表格中的数据项,这个数据项可以是普通文本或是其他控件。

获取表格中的数据

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem

# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 设置表格的行数、列数和大小
table.setColumnCount(3)
table.setRowCount(2)
table.setFixedSize(300, 200)

# 向表格中添加数据
table.setItem(0, 0, QTableWidgetItem('1'))
table.setItem(0, 1, QTableWidgetItem('2'))
table.setItem(0, 2, QTableWidgetItem('3'))
table.setItem(1, 0, QTableWidgetItem('4'))
table.setItem(1, 1, QTableWidgetItem('5'))
table.setItem(1, 2, QTableWidgetItem('6'))

# 获取表格中的数据并打印输出
for row in range(table.rowCount()):
    for column in range(table.columnCount()):
        item = table.item(row, column)
        print(item.text())

# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())

在以上示例中,我们在向表格中逐一添加数据之后,使用item方法获取表格中的数据,通过text()方法获取数据项中的内容,并将其打印输出。

示例一:使用QTableWidget展示数据库中的数据

接下来我们通过一个示例来具体展示如何使用QTableWidget展示数据库中的数据。

import sys
import pymysql
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem

class TableWidget(QTableWidget):

    def __init__(self, data):
        super().__init__()
        self.data = data
        self.initUI()

    def initUI(self):
        self.setColumnCount(3)
        self.setHorizontalHeaderLabels(['编号', '姓名', '年龄'])

        rows_count = len(self.data)
        self.setRowCount(rows_count)
        for i in range(rows_count):
            for j in range(3):
                item = QTableWidgetItem(str(self.data[i][j]))
                self.setItem(i, j, item)

def get_data():
    conn = pymysql.connect(host='127.0.0.1', user='root', password='密码', database='test')
    cursor = conn.cursor()
    cursor.execute('select * from person')
    data = cursor.fetchall()
    cursor.close()
    conn.close()
    return data

if __name__=="__main__":
    app = QApplication(sys.argv)
    data = get_data()
    table = TableWidget(data)
    table.show()
    sys.exit(app.exec_())

在以上示例中,我们首先定义了一个名为TableWidget的类,继承自QTableWidget。TableWidget类中包含了一个data列表作为数据输入。在initUI()方法中,我们先设置了表格的列数和列名,接着根据数据列表设置了表格的行数和具体内容。在get_data()方法中,我们连接创建了mysql数据库,并查询了person表中的数据,最后关闭了数据库的连接。最后在应用中,我们传入相关数据并生成TableWidget对象,将其显示在窗口中。

示例二:支持表格的编辑

接下来我们通过一个示例具体展示如何在QTableWidget中支持表格的编辑。

import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QTableWidget,QTableWidgetItem
from PyQt5.QtCore import Qt

class TableWidget(QTableWidget):
    def __init__(self, parent=None):
        super(TableWidget, self).__init__(parent)
        self.initUI()

    def initUI(self):
        self.setColumnCount(3)
        self.setHorizontalHeaderLabels(['编号', '姓名', '年龄'])
        # 启用编辑模式
        self.setEditTriggers(QTableWidget.DoubleClicked)

        # 设置选中时为整行选中
        self.setSelectionBehavior(QTableWidget.SelectRows)

        # 添加行
        row = self.rowCount()
        self.insertRow(row)

        # 设置行数据
        self.setItem(row,0,QTableWidgetItem("1"))
        self.setItem(row,1,QTableWidgetItem("小明"))
        self.setItem(row,2,QTableWidgetItem("18"))

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

在以上示例中,我们在设置完表格的列名后先启用了表格的双击编辑模式,设置行选中为整行选中,并通过insertRow方法添加了一个新的行,随后通过setItem方法为新行设置了相关数据,并将其显示在表格中。在启用了编辑模式后,用户可以通过双击表格中的单元格,修改表格中的值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – QTableWidget - Python技术站

(1)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • PyQt5 – 当鼠标悬停在复选框上时,为指示器设置背景图片

    为了在PyQt5中将背景图片设置为复选框的指示器(对勾图标)的背景图片,可以使用QSS样式表。具体步骤如下: 第一步:导入PyQt5模块 from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox from PyQt5.QtCore import Qt 第二步:创建QCheckBox对象并设置样式…

    python 2023年5月11日
    00
  • PyQt5 QScrollBar – 改变其方向

    PyQt5是Python语言的GUI编程库,用于创建各种桌面应用程序。其中QScrollBar是PyQt5中的一个控件,它可以用来滚动大量数据。默认情况下,QScrollBar的方向是竖直的,但事实上它也可以设置为水平方向,本篇攻略将详细讲解如何改变Python中的PyQt5 QScrollBar控件的方向。 改变QScrollBar方向的方法一:setOr…

    python 2023年5月13日
    00
  • PyQt5 QCalendarWidget 释放抓取的鼠标输入

    PyQt5是Python语言的GUI编程工具包,其中QCalendarWidget是一个Qt类,用于显示日历和日期选择器。有时候我们会需要处理QCalendarWidget中鼠标的输入事件,比如鼠标按下、移动和释放等。在本文中,将会详细讲解如何在PyQt5中使用QCalendarWidget并处理鼠标的输入事件,让你能够轻松地添加日历元素到你的GUI应用程序…

    python 2023年5月11日
    00
  • PyQt5 QScrollBar – 检查Slider Down属性

    PyQt5是一个流行的Python GUI编程框架,提供了丰富的控件和功能,其中之一就是QScrollBar控件。在使用QScrollBar时,我们经常需要检查其SliderDown属性,因为它可以帮助我们判断滚动条目前是否正在被拖动。以下是一个完整的使用攻略,包含两条示例说明: 示例一:检查QScrollBar拖动状态 我们可以通过检查QScrollBar…

    python 2023年5月13日
    00
  • PyQt5 QCommandLinkButton – 如何设置检查状态

    PyQt5 QCommandLinkButton-如何设置检查状态使用攻略 1. 简介 在 PyQt5 中,QCommandLinkButton 是一种常用的控件,可以在表单中呈现一个类似链接的按钮,点击该按钮可以打开一个新的窗口或者执行一个特定的操作。 除了默认的按钮状态之外,QCommandLinkButton 还提供了一种检查状态,通过该状态可以提示用…

    python 2023年5月12日
    00
  • PyQt5 QDoubleSpinBox – 获取当前值

    PyQt5是Python对Qt框架的封装,可以用于编写跨平台的桌面应用程序。其中,QDoubleSpinBox是PyQt5中的一个控件,用于输入浮点数。获取当前值是使用该控件的常见需求,下面提供详细教程和示例代码。 1. PyQt5 QDoubleSpinBox控件 QDoubleSpinBox是PyQt5中的一个控件,用于输入浮点数。其主要属性和方法如下:…

    python 2023年5月12日
    00
  • PyQt5 – 当鼠标悬停在非可编辑组合框的行编辑部分时的背景图片

    当鼠标悬停在非可编辑组合框的行编辑部分时,可以通过设置样式来改变其背景图片。下面是实现此效果的详细步骤。 1. 安装PyQt5 使用PyQt5实现此功能,需要先安装PyQt5库。可以在Python的官方网站(https://www.python.org/)下载安装Python,然后使用pip命令安装PyQt5库。 pip install PyQt5 2. 导…

    python 2023年5月10日
    00
  • PyQt5 QCommandLinkButton – 点击信号

    PyQt5是一个支持使用Python语言进行GUI编程的库,QCommandLinkButton是其中提供的一个控件,用于创建一个显示命令并附带相关描述信息的按钮。本篇攻略将详细讲解如何使用QCommandLinkButton控件及其点击信号。 QCommandLinkButton控件 QCommandLinkButton控件可以通过创建一个显示命令信息和相…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部