[英]PyQt4: setVerticalHeaderLabels to checkbox
你怎么能setVerticalHeaderLabels
一个的QTableWidget
一个复选框,如果可能的使用Python?
这将是代码的相关部分...
#!/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()
需要一个字符串列表。
可能应该使用setVerticalHeaderItem
并创建看起来像复选框的自定义QTableWidgetItem
子类。
QTableWidgetItem
具有checkState
和setCheckState
方法,因此应该可以实现您所需要的东西。
las,我从来没有这种需求,所以我无法为您提供更多见解。
编辑:只是为了澄清: setVerticalHeaderLabel(s)
对于您要执行的操作是完全错误的。 这只是使用给定文本创建QTableWidgetItem
并将其添加为标题的一种便捷方法。 如果要自定义,则必须使用setVerticalHeaderItem
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.