web-dev-qa-db-ja.com

qtableWidget PyQTに行を追加するにはどうすればよいですか?

私は現在、QtDesignerで設計されたウィジェットに取り組んでいます。 PyQTのQtableに行を追加しようとする構文/全体的な概念に問題があります。行を動的に追加する方法はまだありません。どんな提案も役に立ちます。

よろしく

8
sudobangbang

空の行を追加して、後ですべての列に入力できます。これは、他のすべての行の下に行を挿入する方法です。

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"))

他の位置に行を挿入することもできます(表の最後には必要ありません)

36
Aleksandar

それはやや独特です、私は見つけました。行を挿入するには、次のようなものに従う必要があります。

_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である必要があります) 。

3
Bo Milanovich
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"         

これは私が私のイベント組織アプリケーションのためにそれを成し遂げた方法です

1
Max Keasley

この機能を使用できます

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)
1
saman koushki