使用 PyQt5 实现 TableWidget 表格内容居中

对于刚入行的小白开发者来说,使用 Python 和 PyQt5 创建图形用户界面(GUI)可能会让人感到困惑。今天,我们将通过一个简单的例子来学习如何使用 QTableWidget 控件,并使表格中的内容居中对齐。

整体流程

为了完成这个任务,我们将采取以下步骤:

步骤 描述
1 安装 PyQt5
2 创建 PyQt5 应用程序和主窗口
3 创建 QTableWidget 控件
4 添加数据到表格
5 设置表格内容居中对齐
6 运行应用程序

详细步骤

步骤 1: 安装 PyQt5

如果你还没有安装 PyQt5,可以使用 pip 进行安装。打开命令行,输入以下命令:

pip install PyQt5
步骤 2: 创建 PyQt5 应用程序和主窗口

首先,我们需要创建一个简单的 PyQt5 应用程序和主窗口。以下是相关代码:

import sys                         # 导入系统模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem

# 创建主窗口类
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()          # 继承父类的构造函数
        self.setWindowTitle("Table Widget Example")  # 设置窗口标题
        self.setGeometry(100, 100, 600, 400)          # 设置窗口位置和大小
        
        self.create_table()        # 创建表格

    def create_table(self):
        pass                       # 这个部分暂时留空,后面填充

if __name__ == '__main__':
    app = QApplication(sys.argv)   # 创建一个应用程序对象
    window = MyWindow()             # 创建主窗口
    window.show()                   # 显示主窗口
    sys.exit(app.exec_())          # 运行应用程序
步骤 3: 创建 QTableWidget 控件

create_table 方法中,我们将创建 QTableWidget

def create_table(self):
    self.table_widget = QTableWidget(self)  # 创建 QTableWidget
    self.table_widget.setRowCount(3)        # 设置行数
    self.table_widget.setColumnCount(3)     # 设置列数
    self.setCentralWidget(self.table_widget)  # 将表格设置为中心控件
步骤 4: 添加数据到表格

接下来,我们会在表格中添加一些数据:

self.table_widget.setItem(0, 0, QTableWidgetItem("数据 1"))  # 在 (0, 0) 处设置数据
self.table_widget.setItem(0, 1, QTableWidgetItem("数据 2"))  # 在 (0, 1) 处设置数据
self.table_widget.setItem(0, 2, QTableWidgetItem("数据 3"))  # 在 (0, 2) 处设置数据
self.table_widget.setItem(1, 0, QTableWidgetItem("数据 4"))  # 在 (1, 0) 处设置数据
self.table_widget.setItem(1, 1, QTableWidgetItem("数据 5"))  # 在 (1, 1) 处设置数据
self.table_widget.setItem(1, 2, QTableWidgetItem("数据 6"))  # 在 (1, 2) 处设置数据
self.table_widget.setItem(2, 0, QTableWidgetItem("数据 7"))  # 在 (2, 0) 处设置数据
self.table_widget.setItem(2, 1, QTableWidgetItem("数据 8"))  # 在 (2, 1) 处设置数据
self.table_widget.setItem(2, 2, QTableWidgetItem("数据 9"))  # 在 (2, 2) 处设置数据
步骤 5: 设置表格内容居中对齐

要使表格内容居中对齐,我们需要使用 QTableWidgetItemsetTextAlignment 方法。以下是实现的代码:

from PyQt5.QtCore import Qt     # 导入 Qt 模块

def set_table_contents_center(self):
    for row in range(3):                    # 遍历每一行
        for col in range(3):                # 遍历每一列
            item = self.table_widget.item(row, col)  # 获取单元格的项
            item.setTextAlignment(Qt.AlignCenter)    # 设置文本居中对齐

create_table 方法的末尾,调用 set_table_contents_center 来实现内容居中:

self.set_table_contents_center()   # 调用居中对齐方法

完整代码

下面是包含所有功能的完整代码段:

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

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Table Widget Example")
        self.setGeometry(100, 100, 600, 400)
        
        self.create_table()                # 创建表格

    def create_table(self):
        self.table_widget = QTableWidget(self)
        self.table_widget.setRowCount(3)   # 设置行数
        self.table_widget.setColumnCount(3) # 设置列数
        self.setCentralWidget(self.table_widget)  # 将表格设置为中心控件

        # 为单元格添加数据
        self.table_widget.setItem(0, 0, QTableWidgetItem("数据 1"))
        self.table_widget.setItem(0, 1, QTableWidgetItem("数据 2"))
        self.table_widget.setItem(0, 2, QTableWidgetItem("数据 3"))
        self.table_widget.setItem(1, 0, QTableWidgetItem("数据 4"))
        self.table_widget.setItem(1, 1, QTableWidgetItem("数据 5"))
        self.table_widget.setItem(1, 2, QTableWidgetItem("数据 6"))
        self.table_widget.setItem(2, 0, QTableWidgetItem("数据 7"))
        self.table_widget.setItem(2, 1, QTableWidgetItem("数据 8"))
        self.table_widget.setItem(2, 2, QTableWidgetItem("数据 9"))

        self.set_table_contents_center()     # 调用居中对齐方法

    def set_table_contents_center(self):
        for row in range(3):
            for col in range(3):
                item = self.table_widget.item(row, col)
                item.setTextAlignment(Qt.AlignCenter)  # 设置文本居中对齐

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()                    # 创建主窗口
    window.show()
    sys.exit(app.exec_())

ER 图(示意)

erDiagram
    QTableWidget {
        int row_count
        int column_count
    }
    QTableWidgetItem {
        string text
        int alignment
    }
    QTableWidget ||--o{ QTableWidgetItem : contains

结尾

通过以上步骤,你学习了如何创建一个基本的 PyQt5 应用程序,并在 QTableWidget 控件中实现内容的居中对齐。无论你是刚入门的开发者还是有经验的程序员,这个小项目都能帮助你巩固对 PyQt5 的理解。

建议你可以尝试进一步扩展这个项目,比如添加更多的行列,或允许用户动态添加内容。编写代码的乐趣在于不断尝试和探索,期待你在这条道路上越走越远!