【问题标题】:How to select multiple cells of QTableWidget?如何选择 QTableWidget 的多个单元格?
【发布时间】:2019-12-16 21:16:15
【问题描述】:

我正在尝试从 QTableWidget 中预先选择多个“单个值(或某些人想要调用 em 的单元格)”,但我似乎无法找到正确的方法。我试过 setRangeSelect、selectRow 和 selectColumn,但这些方法都不起作用。

寻求帮助。 (请参阅我正在尝试做的测试方法)

import sys
import json
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QPushButton
from PyQt5.Qt import QTableWidgetItem, QAbstractItemView

class Demo(QWidget):

    def __init__(self):
        super().__init__()
        self.rowTracker = []
        self.initUI()
        self.initQTableWidget()

    def initUI(self):       
        self.resize(600, 600)
        # populate some data
        self.rows = [['a1','b1', 'c1'], ['a2','b2','c2'], ['a3','b3','c3'], ['a4','b4','c4'], ['a5','b5','c5']]

        self.btn = QPushButton(self)
        self.btn.move(50, 250)
        self.btn.resize(150, 40)
        self.btn.setText('Check')
        self.btn.clicked.connect(self.test)

    def initQTableWidget(self):
        self.tableWidget = QTableWidget(self)
        self.tableWidget.resize(self.width(), self.height()-400)
        self.tableWidget.setRowCount(len(self.rows))
        self.tableWidget.setColumnCount(len(self.rows[0]))

        # here we will change row selection behavior to multiselection
        self.tableWidget.setSelectionMode(QAbstractItemView.MultiSelection)

        for row in enumerate(self.rows):
            # print(row)
            for col in enumerate(row[1]):
                item = QTableWidgetItem()
                item.setText(col[1])
                self.tableWidget.setItem(row[0], col[0], item)

    def test(self):
        # print(dir(self.tableWidget))
        self.tableWidget.select('<2nd row>', '<1st column>')

        self.tableWidget.select('<3nd row>', '<2nd column>')
        # self.tableWidget.setRangeSelect()

app =QApplication(sys.argv)
widget = Demo()
widget.show()
sys.exit(app.exec_())

【问题讨论】:

    标签: python python-3.x pyqt pyqt5 qtablewidget


    【解决方案1】:

    有以下几种方法:

    1. QtableWidgetItemsetSelected()方法:
    self.tableWidget.item(1, 0).setSelected(True)
    self.tableWidget.item(2, 1).setSelected(True)
    
    1. QItemSelectionModelselect()方法:
    model = self.tableWidget.model()
    selection_model = self.tableWidget.selectionModel()
    selection_model.select(model.index(1, 0), QItemSelectionModel.Select)
    selection_model.select(model.index(2, 1), QItemSelectionModel.Select)
    

    第二种方法对所有继承自QAbstractItemView的视图都是通用的,第一种方法只是将QTableWidget变成第二种方法的包装器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      相关资源
      最近更新 更多