개발/Python

tableWidget PyQT에 행을 추가하는 방법은 무엇입니까?

MinorMan 2020. 9. 18. 01:09
반응형

<질문>

저는 현재 Qt Designer에서 디자인 된 위젯을 작업하고 있습니다. PyQT의 Qtable에 행을 추가하려는 구문 / 전체 개념에 문제가 있습니다. 행을 동적으로 추가하는 방법은 아직 없습니다. 어떤 제안이라도 도움이 될 것입니다.

문안 인사


<답변1>

빈 행을 추가하고 나중에 모든 열을 채울 수 있습니다. 다른 모든 행 아래에 행을 삽입하는 방법은 다음과 같습니다.

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

다른 위치에 행을 삽입 할 수도 있습니다 (테이블 끝에 필요하지 않음).


<답변2>

다소 이상하다는 것을 발견했습니다. 행을 삽입하려면 다음과 유사한 내용을 따라야합니다.

tableWidget = QTableWidget()
currentRowCount = tableWidget.rowCount() #necessary even when there are no rows in the table
tableWidget.insertRow(currentRowCount, 0, QTableWidgetItem("Some text"))

코드의 마지막 줄을 명확히하기 위해 insertRow ()의 첫 번째 매개 변수는 현재 행이고 두 번째 매개 변수는 현재 열 (항상 0부터 시작)이며 세 번째 매개 변수는 거의 항상 QTableWidgetItem 유형이어야합니다.


<답변3>

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"         

이것이 내 이벤트 조직 응용 프로그램을 수행 한 방법입니다.


<답변4>

이 기능을 사용할 수 있습니다

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)
반응형