标题:求多层表头QTableWidget实例
只看楼主
yll148
Rank: 2
等 级:论坛游民
威 望:3
帖 子:266
专家分:15
注 册:2012-7-3
结帖率:87.5%
已结贴  问题点数:20 回复次数:3 
求多层表头QTableWidget实例
哪位能够提供多层表头QTableWidget实例,本人在设计一个关于报表管理的小程序,切换报表随时生成GRID进行修改或浏览,谢谢!谢谢!
搜索更多相关主题的帖子: 表头 实例 报表 GRID 多层 
2023-03-25 21:53
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:20 

在PyQt5中,可以使用QTableWidget来创建表格,包括多层表头。以下是一个简单的示例,展示如何创建一个带有两层表头的QTableWidget实例:

程序代码:
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QAbstractItemView, QHeaderView
from PyQt5.QtCore import Qt

app = QApplication([])

# 创建QTableWidget实例
table = QTableWidget()

# 设置行列数
table.setColumnCount(3)
table.setRowCount(3)

# 设置表头
table.setHorizontalHeaderLabels(['Header 1', 'Header 2', 'Header 3'])
table.setVerticalHeaderLabels(['', 'Header A', 'Header B'])

# 设置表格内容
for i in range(3):
    for j in range(3):
        item = QTableWidgetItem('Item ({}, {})'.format(i, j))
        table.setItem(i, j, item)

# 设置表格属性
table.setEditTriggers(QAbstractItemView.NoEditTriggers)
table.setSelectionBehavior(QAbstractItemView.SelectRows)
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
table.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)

# 显示表格
table.show()

app.exec_()


在这个示例中,我们创建了一个3x3的QTableWidget实例,并设置了两层表头。我们使用setHorizontalHeaderLabels和setVerticalHeaderLabels函数来设置表头,使用setItem函数来设置表格内容。我们还设置了一些表格属性,例如禁止编辑、选择整行、自动调整列宽等。最后,我们调用show函数显示表格。

会当凌绝顶,一览众山小.
2023-03-25 21:57
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
回复 楼主 yll148

以下是一个简单的报表管理小程序,使用PyQt5实现。该程序允许用户添加、编辑和删除报表,以及查看报表的详细信息。

程序代码:
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem, QHeaderView, QMessageBox
from PyQt5.QtCore import Qt

class Report:
    def __init__(self, name, description, date):
        self.name = name
        self.description = description
        self.date = date

class ReportManager(QMainWindow):
    def __init__(self):
        super().__init__()

        # 初始化报表列表
        self.reports = []

        # 设置窗口标题
        self.setWindowTitle('Report Manager')

        # 创建主窗口部件
        main_widget = QWidget()
        self.setCentralWidget(main_widget)

        # 创建主窗口布局
        main_layout = QVBoxLayout()
        main_widget.setLayout(main_layout)

        # 创建报表列表部件
        report_list_widget = QWidget()
        main_layout.addWidget(report_list_widget)

        # 创建报表列表布局
        report_list_layout = QHBoxLayout()
        report_list_widget.setLayout(report_list_layout)

        # 创建报表列表
        self.report_table = QTableWidget()
        self.report_table.setColumnCount(3)
        self.report_table.setHorizontalHeaderLabels(['Name', 'Description', 'Date'])
        self.report_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.report_table.verticalHeader().setVisible(False)
        report_list_layout.addWidget(self.report_table)

        # 创建报表操作部件
        report_action_widget = QWidget()
        main_layout.addWidget(report_action_widget)

        # 创建报表操作布局
        report_action_layout = QHBoxLayout()
        report_action_widget.setLayout(report_action_layout)

        # 创建报表名称标签和文本框
        name_label = QLabel('Name:')
        self.name_edit = QLineEdit()
        report_action_layout.addWidget(name_label)
        report_action_layout.addWidget(self.name_edit)

        # 创建报表描述标签和文本框
        description_label = QLabel('Description:')
        self.description_edit = QLineEdit()
        report_action_layout.addWidget(description_label)
        report_action_layout.addWidget(self.description_edit)

        # 创建报表日期标签和文本框
        date_label = QLabel('Date:')
        self.date_edit = QLineEdit()
        report_action_layout.addWidget(date_label)
        report_action_layout.addWidget(self.date_edit)

        # 创建添加报表按钮
        add_button = QPushButton('Add')
        add_button.clicked.connect(self.add_report)
        report_action_layout.addWidget(add_button)

        # 创建编辑报表按钮
        edit_button = QPushButton('Edit')
        edit_button.clicked.connect(self.edit_report)
        report_action_layout.addWidget(edit_button)

        # 创建删除报表按钮
        delete_button = QPushButton('Delete')
        delete_button.clicked.connect(self.delete_report)
        report_action_layout.addWidget(delete_button)

        # 更新报表列表
        self.update_report_table()

    def update_report_table(self):
        # 清空报表列表
        self.report_table.setRowCount(0)

        # 添加报表到列表
        for report in self.reports:
            row = self.report_table.rowCount()
            self.report_table.insertRow(row)
            self.report_table.setItem(row, 0, QTableWidgetItem(report.name))
            self.report_table.setItem(row, 1, QTableWidgetItem(report.description))
            self.report_table.setItem(row, 2, QTableWidgetItem(report.date))

    def add_report(self):
        # 获取报表信息
        name = self.name_edit.text()
        description = self.description_edit.text()
        date = self.date_edit.text()

        # 创建报表
        report = Report(name, description, date)

        # 添加报表到列表
        self.reports.append(report)

        # 更新报表列表
        self.update_report_table()

        # 清空文本框
        self.name_edit.clear()
        self.description_edit.clear()
        self.date_edit.clear()

    def edit_report(self):
        # 获取当前选中的报表
        selected_rows = self.report_table.selectionModel().selectedRows()

        # 如果没有选中报表,弹出提示框
        if len(selected_rows) == 0:
            QMessageBox.warning(self, 'Warning', 'Please select a report to edit.')
            return

        # 获取选中报表的索引
        selected_row = selected_rows[0].row()

        # 获取选中报表的信息
        name = self.name_edit.text()
        description = self.description_edit.text()
        date = self.date_edit.text()

        # 更新选中报表的信息
        self.reports[selected_row].name = name
        self.reports[selected_row].description = description
        self.reports[selected_row].date = date

        # 更新报表列表
        self.update_report_table()

        # 清空文本框
        self.name_edit.clear

会当凌绝顶,一览众山小.
2023-03-25 22:00
yll148
Rank: 2
等 级:论坛游民
威 望:3
帖 子:266
专家分:15
注 册:2012-7-3
得分:0 
回复 3楼 东海ECS
,谢谢您,我需要这个格局的,这个是VFP做的,PY不会弄。
2023-03-25 22:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511681-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059530 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved