2012-07-30 11 views
11

Desidero aggiungere i miei dati a una tabella usando pyqt in python. Ho scoperto che dovrei usare la funzione setItem() per aggiungere dati a QTableWidget e dargli il numero di riga e colonna e un QTableWidgetItem. L'ho fatto ma quando voglio visualizzare il tavolo, è completamente vuoto. Forse ho fatto uno stupido errore ma per favore aiutatemi. Ecco il mio codice:Aggiunta di dati a QTableWidget usando PyQt4 in Python

from PyQt4 import QtGui 

class Table(QtGui.QDialog): 
    def __init__(self, parent=None): 
     super(Table, self).__init__(parent) 
     layout = QtGui.QGridLayout() 
     self.led = QtGui.QLineEdit("Sample") 
     self.table = QtGui.QTableWidget() 
     layout.addWidget(self.led, 0, 0) 
     layout.addWidget(self.table, 1, 0) 
     self.table.setItem(1, 0, QtGui.QTableWidgetItem(self.led.text())) 
     self.setLayout(layout) 

if __name__ == '__main__': 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    t = Table() 
    t.show() 
    sys.exit(app.exec_()) 

risposta

19

Quello che state cercando sono i setRowCount() e setColumnCount() metodi. Chiamali sullo QTableWidget per specificare il numero di righe/colonne. Per esempio.

... 
self.table = QtGui.QTableWidget() 
self.table.setRowCount(5) 
self.table.setColumnCount(5) 
layout.addWidget(self.led, 0, 0) 
layout.addWidget(self.table, 1, 0) 
self.table.setItem(1, 0, QtGui.QTableWidgetItem(self.led.text())) 
... 

Questo codice renderà una tabella 5x5 e visualizzare "campione" nella seconda riga (con indice 1) e nella prima colonna (con indice 0).

Senza chiamare questi due metodi, QTableWidget non saprebbe quanto è grande la tabella, quindi impostare l'elemento in posizione (1, 0) non avrebbe senso.

Nel caso in cui non si è a conoscenza, lo Qt Documentation è dettagliato e contiene molti esempi (che possono essere facilmente convertiti in Python). Le sezioni "Descrizione dettagliata" sono particolarmente utili. Se desideri maggiori informazioni su QTableWidget, vai qui: http://qt-project.org/doc/qt-4.8/qtablewidget.html#details