私は現在、QtDesignerで設計されたウィジェットに取り組んでいます。 PyQTのQtableに行を追加しようとする構文/全体的な概念に問題があります。行を動的に追加する方法はまだありません。どんな提案も役に立ちます。
よろしく
空の行を追加して、後ですべての列に入力できます。これは、他のすべての行の下に行を挿入する方法です。
rowPosition = self.table.rowCount()
table.insertRow(rowPosition)
その後、たとえば次のように入力できる空の行があります(3つの列がある場合)。
table.setItem(rowPosition , 0, QtGui.QTableWidgetItem("text1"))
table.setItem(rowPosition , 1, QtGui.QTableWidgetItem("text2"))
table.setItem(rowPosition , 2, QtGui.QTableWidgetItem("text3"))
他の位置に行を挿入することもできます(表の最後には必要ありません)
それはやや独特です、私は見つけました。行を挿入するには、次のようなものに従う必要があります。
_tableWidget = QTableWidget()
currentRowCount = tableWidget.rowCount() #necessary even when there are no rows in the table
tableWidget.insertRow(currentRowCount, 0, QTableWidgetItem("Some text"))
_
コードの最後の行を明確にするために、insertRow()
の最初のパラメーターは現在の行、2番目のパラメーターは現在の列(常に0ベースであることを忘れないでください)、3番目のパラメーターはほとんど常にタイプQTableWidgetItem
である必要があります) 。
def add_guest(self):
rowPosition = self.tableWidget.rowCount()
self.tableWidget.insertRow(rowPosition)
guest_name = self.lineEdit.text()
guest_email = self.lineEdit_2.text()
numcols = self.tableWidget.columnCount()
numrows = self.tableWidget.rowCount()
self.tableWidget.setRowCount(numrows)
self.tableWidget.setColumnCount(numcols)
self.tableWidget.setItem(numrows -1,0,QtGui.QTableWidgetItem(guest_name))
self.tableWidget.setItem(numrows -1,1,QtGui.QTableWidgetItem(guest_email))
print "guest added"
これは私が私のイベント組織アプリケーションのためにそれを成し遂げた方法です
この機能を使用できます
def table_appender(widget, *args):
def set_columns(len, pos):
if pos == len-1:
widget.setItem(widget.rowCount()-1, pos, QTableWidgetItem(args[pos]))
else:
widget.setItem(widget.rowCount()-1, pos, QTableWidgetItem(args[pos]))
set_columns(len, pos+1)
widget.insertRow(widget.rowCount())
set_columns(widget.columnCount(), 0)