파이썬 활용하여 테이블이 포함된 창 생성하기
#gui_11.py
import sys
from PyQt5.QtWidgets import *
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(800,200,300,300)
self.tableWidget = QTableWidget(self)
self.tableWidget.resize(290,300)
#출력전 테이블의 행,열의 개수 미리 지정
self.tableWidget.setRowCount(2)
self.tableWidget.setColumnCount(2)
#테이블의 데이터에 관한 함수(지정) 호출
self.setTableWidgetData()
def setTableWidgetData(self):
#setItem메서드는 3개 인자를 받음. (행에 대한 인덱스, 열에 대한 인덱스, QTableWidgetItem 객체) 전달
self.tableWidget.setItem(0, 0, QTableWidgetItem('1사분면'))
self.tableWidget.setItem(0, 1, QTableWidgetItem('2사분면'))
self.tableWidget.setItem(1, 0, QTableWidgetItem('3사분면'))
self.tableWidget.setItem(1, 1, QTableWidgetItem('4사분면'))
if __name__ =='__main__':
app=QApplication(sys.argv)
mywindow = MyWindow()
mywindow.show()
app.exec_()
#gui_12.py
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
kospi_top5={
'code':['005930','015750','005380','090430','012330'],
'name':['삼성','한국전력','현대차','아모레','현대모비스'],
'cprice':['1,269,000','60,100','132,000','414,500','243,500']
}
column_idx_lookup={'code':0,'name':1,'cprice':2} #열에 대한 인덱스
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(800,200,300,300)
self.tableWidget = QTableWidget(self)
self.tableWidget.resize(300,300)
self.tableWidget.setColumnCount(3)
self.tableWidget.setRowCount(5)
#setEditTriggrers 메서드를 활용해 사용자가 QTableWidget의 아이템 항목을 수정할 수 없도록 설정.
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.setTableWidgetData()
def setTableWidgetData(self):
#컬럼에 대한 라벨 설정
#row 방향의 라벨인 경우 setVerticalHeaderLabels 사용
column_header=['종목코드','종목명','종가']
self.tableWidget.setHorizontalHeaderLabels(column_header)
for k,v in kospi_top5.items():
col = column_idx_lookup[k]
for row,val in enumerate(v):
#QTableWidget에 아이템으로 삽입하려면 먼저 데이터를 QTableWidgetItem 객체로 만들어야 한다.
item = QTableWidgetItem(val)
if col==2:
item.setTextAlignment(Qt.AlignVCenter | Qt.AlignRight) #우측정렬
# setItem메서드는 3개 인자를 받음. (행에 대한 인덱스, 열에 대한 인덱스, QTableWidgetItem 객체) 전달
self.tableWidget.setItem(row,col,item)
#행과 열의 크기를 저장된 item의 길이에 맞춰 자동 조정 (resize)
self.tableWidget.resizeColumnsToContents()
self.tableWidget.resizeRowsToContents()
if __name__=='__main__':
app=QApplication(sys.argv)
mywindow=MyWindow()
mywindow.show()
app.exec_()
댓글
댓글 쓰기