QTableWidget Class는 테이블 형태로 항목을 배치하고 다루도록 합니다. (QTableWidget 공식 문서) 참고
36-1 예제: ex35
import sys from PyQt5.QtWidgets import (QApplication, QWidget, QTableWidget, QAbstractItemView, QHeaderView, QVBoxLayout, QTableWidgetItem) class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.tableWidget = QTableWidget() self.tableWidget.setRowCount(10) self.tableWidget.setColumnCount(4) self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) # self.tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked) # self.tableWidget.setEditTriggers(QAbstractItemView.AllEditTriggers) self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.tableWidget.horizontalHeader().setSelectionMode(QAbstractItemView.MultiSelection) # self.tableWidget.horizontalHeader().setSelectionResizeMode(QHeaderView.ResizeToContents) for i in range(10): for j in range(4): self.tableWidget.setItem(i, j, QTableWidgetItem(str(i+j))) self.siseTable = QTableWidget() self.siseTable.setColumnCount(2) self.siseTable.setRowCount(3) colLabels = ["종목명", "종목코드"] self.siseTable.setHorizontalHeaderLabels(colLabels) self.siseTable.setItem(0, 0, QTableWidgetItem("삼성전자")) self.siseTable.setItem(0, 1, QTableWidgetItem("005930")) self.siseTable.setItem(1, 0, QTableWidgetItem("SK하이닉스")) self.siseTable.setItem(1, 1, QTableWidgetItem("000660")) self.siseTable.setItem(2, 0, QTableWidgetItem("NAVER")) self.siseTable.setItem(2, 1, QTableWidgetItem("035420")) vbox = QVBoxLayout() vbox.addWidget(self.tableWidget) vbox.addWidget(self.siseTable) self.setLayout(vbox) self.setWindowTitle('QTableWidget') self.setGeometry(300, 100, 600, 400) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
36-2 설명
self.tableWidget = QTableWidget() self.tableWidget.setRowCount(20) self.tableWidget.setColumnCount(4) |
- QTableWidget 클래스를 사용해서 테이블 위젯을 하나 만듭니다.
- setRowCount() 메서드를 이용하여 행(Row) 개수를 지정하고, setColumnCount() 메서드를 이용하여 열(Column) 개수를 지정합니다.
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) # self.tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked) # self.tableWidget.setEditTriggers(QAbstractItemView.AllEditTriggers) |
- setEditTriggers() 메서드는 테이블의 항목을 편집 가능하도록 하는 Action을 지정합니다.
- QAbstractItemView.NoEditTriggers으로 지정하면 편집을 할 수 없습니다.
- QAbstractItemView.DoubleClicked으로 지정하면 칸을 더블클릭했을 때 편집이 가능합니다.
- QAbstractItemView.AllEditTriggers으로 지정하면 클릭, 더블클릭 등 모든 엑션에 대해 편집이 가능하도록 합니다.
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.tableWidget.horizontalHeader().setSelectionMode(QAbstractItemView.MultiSelection) # self.tableWidget.horizontalHeader().setSelectionResizeMode(QHeaderView.ResizeToContents) |
- horizontalHeader()는 수평 헤더를 반환합니다.
- setSelectionResizeMode() 메서드는 헤더의 크기를 조절하는 방식으로 QHeaderView.Strech로 설정하면 헤더의 폭이 위젯의 폭에 맞춰지도록 합니다.
- setSelectionMode() 메서드는 헤더를 선택하는 방식으로 QAbstractItemView.MultiSelection로 설정하면 다중 선택이 가능하도록 설정합니다.
- QHeaderView.ResizeToContents는 헤더의 폭이 항목 값의 폭에 맞춰지도록 합니다.
for i in range(10): for j in range(4): self.tableWidget.setItem(i, j, QTableWidgetItem(str(i+j))) |
- setItem(row, column, value) 메서드는 테이블 항목을 지정합니다.
- 순서대로 행과 열의 번호, 그리고 값을 입력합니다.
36-3 결과
'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
38. QColorDialog (0) | 2021.07.27 |
---|---|
37. QInputDialog (0) | 2021.07.27 |
34. QTextEdit (0) | 2021.07.27 |
33. QTextBrowser (0) | 2021.07.27 |
32.QDateTimeEdit (0) | 2021.07.27 |