2012-09-08 3 views
0

setVerticalHeaderLabelsQTableWidget을 python을 사용하여 가능한 경우 확인란에 표시 할 수 있습니까? PyQt4 : checkVerticalHeaderLabels을 체크 박스로 설정

QTableWidget.setVerticalHeaderLabels() 문자열의 목록을 기대하고 있기 때문에

#!/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'을 올릴 것이다 ... 코드의 관련 부분이 될 것입니다.

답변

1

아마도 setVerticalHeaderItem을 사용해야하고 체크 박스처럼 보이는 QTableWidgetItem 맞춤 클래스를 만들어야합니다.

QTableWidgetItemcheckStatesetCheckState 방법을 사용하므로 사용자가 요구하는 것과 같은 것이 가능해야합니다.

아아 나는 이러한 필요성을 본 적이 없으므로 더 많은 통찰력을 줄 수는 없습니다.

편집 : 명확히하기 위해 : setVerticalHeaderLabel(s)은 당신이하려는 일에 완전히 틀립니다. 주어진 텍스트를 사용하여 QTableWidgetItem을 만들고 헤더로 추가하는 것은 편리한 방법 일뿐입니다. 사용자 정의가 필요하면 setVerticalHeaderItem을 사용해야합니다.

+0

정보 주셔서 감사합니다! –

관련 문제