pyqt 在表格中插入按钮

pyqt 在表格中插入按钮

在 QStandardItemModel 中插入按钮可以通过使用 setIndexWidget() 方法实现。该方法可以在指定的 QModelIndex 上设置一个小部件,并在该位置显示该小部件。可以使用 model.index() 方法获取特定单元格的 QModelIndex,然后使用 setIndexWidget() 方法在该位置添加按钮。

以下是一个示例代码片段,演示如何在 QStandardItemModel 中插入按钮:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        
        # 创建 QStandardItemModel 并填充数据
        self.model = QStandardItemModel()
        self.model.setHorizontalHeaderLabels(['Name', 'Age', 'Button'])
        for row in range(3):
            for column in range(3):
                item = QStandardItem(str(row * 3 + column + 1))
                self.model.setItem(row, column, item)

        # 创建表格视图
        self.tableView = QTableView()
        self.tableView.setModel(self.model)
        # 在最后一列插入按钮
        for row in range(3):
            btn = QPushButton('Button')
            btn.setProperty('row', row)
            btn.setProperty('column', 2)
            btn.clicked.connect(self.on_button_clicked)
            index = self.model.index(row, 2, QModelIndex())
            self.tableView.setIndexWidget(index, btn)
        # 将表格视图添加到窗口中
        layout = QHBoxLayout(self)
        layout.addWidget(self.tableView)
        self.setLayout(layout)

    def on_button_clicked(self):
        sender = self.sender()
        row = sender.property('row')
        column = sender.property('column')
        index = self.model.index(row, column, QModelIndex())
        print(f'Button clicked at row {row}, column {column}, value is {self.model.data(index, Qt.DisplayRole)}')


if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

在此示例中,我们创建了一个 QStandardItemModel 对象并在其中填充了一些数据。我们在表格的最后一列中插入了按钮,使用 setIndexWidget() 方法设置按钮小部件。在按钮的 clicked 信号中,我们获取了按钮的行、列和模型索引,并打印了相应单元格的值。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,可以采用以下步骤: 1. 在 PyQt 创建一个表格控件(QTableWidget)以及一个按钮(QPushButton)。 2. 将按钮的clicked信号连接到一个函数上,在该函数获取最新的数据,并将其插入表格控件。 3. 在插入数据之前,可以先清空表格控件的原有数据,以确保新的数据可以正确地显示。 4. 最后,可以调用表格控件的show()函数以及应用程序的exec_()函数来显示界面和运行事件循环。 下面是一个示例代码,可以参考一下: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建表格控件和按钮 self.tableWidget = QTableWidget() self.btn = QPushButton('Load Data') # 将按钮的clicked信号连接到loadData函数上 self.btn.clicked.connect(self.loadData) # 创建一个垂直布局,并将表格控件和按钮添加到该布局 vbox = QVBoxLayout() vbox.addWidget(self.tableWidget) vbox.addWidget(self.btn) # 将布局设置为窗口的主布局 self.setLayout(vbox) # 设置窗口的大小和标题 self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Table Example') self.show() def loadData(self): # 获取最新的数据,并将其插入表格控件 data = [['Alice', 25, 'Female'], ['Bob', 30, 'Male'], ['Charlie', 35, 'Male']] self.tableWidget.setRowCount(0) for row in data: self.tableWidget.insertRow(self.tableWidget.rowCount()) for col, val in enumerate(row): item = QTableWidgetItem(str(val)) self.tableWidget.setItem(self.tableWidget.rowCount() - 1, col, item) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 在上面的代码,loadData函数用于获取最新的数据,并将其插入表格控件。在插入数据之前,我们调用了tableWidget.setRowCount(0)函数来清空表格控件的原有数据。然后,我们使用两个for循环来遍历数据,并将每个单元格的值插入表格控件。注意,我们使用了tableWidget.rowCount()函数来获取表格控件当前的行数,并使用tableWidget.insertRow()函数来插入新的行。 最后,我们在主函数创建了应用程序对象,并将Example类的实例作为窗口显示出来。当用户点击按钮时,就会调用loadData函数来更新表格控件的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值