본문 바로가기
  • You find inspiration to create your own path !
personal activity/stock

sector] 종목 순위 정의 하기 #1

by ToolBOX01 2025. 9. 16.
반응형

▣ sector 선택하기

Ticker.xlsx로 부터 sector 이름 가져오기 기능을 개발 합니다.  Qt Designer로 부터 " stock.ui를 만듭니다.  Qt Designer 위젯 "Combo Box"를 선택 합니다. "Combo Box"에 엑셀 파일에 있는 sector 값들을 표시 합니다.

combo box

ticker.xlsx
0.16MB
stock.ui
0.00MB

 

 "Combo Box" 선택 기능 파이썬 코드

import sys
import pandas as pd
from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6 import uic

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # .ui 파일을 직접 로드
        uic.loadUi('stock.ui', self)  # stock.ui 파일 경로
        self.load_sectors()

    def load_sectors(self):
        try:
            df = pd.read_excel('ticker.xlsx', sheet_name='tickersheet')
            sectors = df.iloc[1:, 2].dropna().unique().tolist()  # C열(C2 아래) 데이터
            self.comboBoxsector.addItems(sectors)  # UI에서 comboBoxsector에 직접 접근
        except Exception as e:
            print(f"Error loading sectors: {e}")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

  선택  항목의 엑셀 값 가져오는  파이썬 코드

 

import sys
import pandas as pd
from PyQt6.QtWidgets import QApplication, QMainWindow, QTableWidgetItem
from PyQt6 import uic

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # .ui 파일 직접 로드
        uic.loadUi('stock.ui', self)  # stock.ui 파일 경로
        self.load_sectors()
        # 콤보박스 선택 이벤트 연결
        self.comboBoxsector.currentTextChanged.connect(self.update_ticker_table)

    def load_sectors(self):
        try:
            df = pd.read_excel('ticker.xlsx', sheet_name='tickersheet')
            sectors = df.iloc[1:, 2].dropna().unique().tolist()  # C열(C2 아래) 데이터
            self.comboBoxsector.addItems(sectors)
            # 엑셀 데이터를 클래스 변수로 저장하여 재사용
            self.df = df
        except Exception as e:
            print(f"Error loading sectors: {e}")

    def update_ticker_table(self, selected_sector):
        try:
            # 테이블 위젯 초기화
            self.tableWidgetsetor.setRowCount(0)
            # 선택된 섹터에 해당하는 데이터 필터링
            filtered_df = self.df[self.df.iloc[:, 2] == selected_sector]
            # A, B, C, D, E, F, G, H열 데이터 추출
            data = filtered_df.iloc[:, [0, 1, 2, 3, 4, 5, 6, 7]].dropna().values.tolist()
            # 테이블 위젯에 데이터 추가
            self.tableWidgetsetor.setRowCount(len(data))
            for row, row_data in enumerate(data):
                for col, value in enumerate(row_data):
                    self.tableWidgetsetor.setItem(row, col, QTableWidgetItem(str(value)))
        except Exception as e:
            print(f"Error updating ticker table: {e}")

if __name__ == '__main__':
    app = QApplication(sys.argv)  # QApplication 사용
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

 

코드 실행 결과

 


반응형