0

可能であれば、Pythonを使用してチェックボックスをオンにするにsetVerticalHeaderLabelsはどうすればよいですか?QTableWidget

これは、コードの関連部分になります...

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.table = QTableWidget()
        self.setCentralWidget(self.table)

        self.updateTable()

    def updateTable(self):
        table_rows = range(0,1)
        table_cols = range(0,1)

        self.table.setRowCount(len(table_rows))
        self.table.setColumnCount(len(table_cols))

        vertical_label = [self.tableCheckbox() for row in table_rows]
        self.table.setVerticalHeaderLabels(vertical_label)

    def tableCheckbox(self):
        chkBoxItem = QTableWidgetItem()
        chkBoxItem.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
        chkBoxItem.setCheckState(Qt.Unchecked)
        return chkBoxItem

def main():
    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    app.exec_()

if __name__ == "__main__":
    main()

文字列のリストを期待しているTypeError: QTableWidget.setVerticalHeaderLabels(QStringList): argument 1 has unexpected type 'list'ため、このコードは発生します。QTableWidget.setVerticalHeaderLabels()

4

1 に答える 1

1

おそらく、チェックボックスのように見えるsetVerticalHeaderItemカスタムサブクラスを使用して作成する必要があります。QTableWidgetItem

QTableWidgetItemcheckStateとメソッドがsetCheckStateあるので、あなたが必要としているようなものが可能であるはずです。

残念ながら、私はこのようなニーズを経験したことがないので、これ以上の洞察を提供することはできません。

編集:明確にするために:setVerticalHeaderLabel(s)あなたがやろうとしていることに対して完全に間違っています。QTableWidgetItem指定されたテキストを使用してを作成し、それをヘッダーとして追加するのは便利な方法です。カスタマイズが必要な場合は、を使用する必要がありますsetVerticalHeaderItem

于 2012-09-08T12:29:03.057 に答える