【问题标题】:PyQt4: setVerticalHeaderLabels to checkboxPyQt4:setVerticalHeaderLabels 到复选框
【发布时间】:2012-09-08 20:29:03
【问题描述】:

如果可能的话,如何使用 python 将 QTableWidgetsetVerticalHeaderLabels 设置为复选框?

这将是代码的相关部分...

#!/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() 需要一个字符串列表。

【问题讨论】:

    标签: python checkbox label pyqt4 qtreewidget


    【解决方案1】:

    您可能应该使用setVerticalHeaderItem 并创建您的自定义QTableWidgetItem 子类,它看起来像一个复选框。

    QTableWidgetItem 具有 checkStatesetCheckState 方法,因此您需要的东西应该是可能的。

    唉,我从来没有这种需求,所以我无法为您提供更多见解。

    编辑: 只是为了澄清一下:setVerticalHeaderLabel(s) 对于您要尝试做的事情是完全错误的。 使用给定文本创建QTableWidgetItem 并将其添加为标题只是一种方便的方法。如果你想定制你必须使用setVerticalHeaderItem

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      相关资源
      最近更新 更多