[Python_trading] 파이썬_GUI(6)_테이블 포함된 창 생성

 파이썬 활용하여 테이블이 포함된 창 생성하기

#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_()

댓글