앞선 강의에서 ADR 데이터를 받아와 아주 작은 GUI에 전시하는 것을 코딩하셨습니다. 이번엔 조금 발전 지켜서 아주 큰 GUI에 원하는 모든 데이터를 전시하고 분석하여 투자 위험도를 판단할 것입니다.
강의에 앞서 전체 강의는 하나의 사이트에서만 받아오는 예제를 진행할 것이며, 나머지는 각 독자께서 원하는 값을 받아와 취합하시면 됩니다. 그리고 기초반을 듣지 않으시고 GUI만 띄우시고 싶으신 분들은 제일 마지막의 코드만 확인하셔도 됩니다.
1. 데이터를 받아오기 위한 기본 구조 빌드업 하기
기초반에서 강의했던 내용을 재 강의 해 드리겠습니다. 앞서 이해하시고 자신만의 프로그램 만드신 분들은 가볍게 읽어 보시면 될 것 같습니다.
[링크 : 강의 모음] : 기초반 강의 모음
(1) News_all.py 스크립트 생성
아래 그림을 보시면 Main ui에서 시황 파악하기 버튼을 클릭하면 시황 데이터를 넣을 ui가 새 화면으로 뜨는 것을 확인할 수 있습니다.
그러면 ALBA2.ui를 띄울 수 있는 스크립트를 생성 및 코딩을 진행해 보겠습니다.
① GUI를 사용하기위한 함수 가져오기
- from PyQt5.QtWidgets import * : 그래픽 제어를 위한 클래스
- from PyQt5 import uic : ui 로드를 위한 클래스
② 크롤링을 위한 스레드
앞으로 Qthread_4에 크롤링을 위한 스레드를 생성할 것입니다.
③ 크롤링 된 데이터를 전시하기 위한 GUI 불러오기
아래 그림과 같이 우리가 불러올 ALBA2.ui를 QT Designer에서 만듭니다. (GUI 만드는 법에 대해서는 많이 설명드렸지만 혹시 기억나지 않는 분을 위해서 관련 링크 걸어 드립니다.[링크 : ui 만들기] )
파일에 새 프로젝트를 생성하시고 원하는 크기만큼 ui를 확장시킵니다. 그리고 우선 push 버튼을 우측 상단에 생성하신 후 objectName을 설정해 주세요. 닫기를 위한 object입니다.
- form_secondwindow = uic.loadUiType("ALBA2.ui")[0] : 앞서 우리가 만든 ALBA2.ui를 파이썬이 사용할 수 있게 form_secondwindow에 객체화시킵니다.
④ 화면을 띄울 수 있는 클래스 만들기
클래스 안의 구조와 함수 설명은 [링크 : 기초반 7강]에 아주 자세히 설명되어 있습니다.
- class secondwindow() : secondwindow클래스 생성 후 GUI 사용을 위해 부모 클래스를 상속받습니다.
- def __ini__(self) : 함수를 생성하고 초기화합니다.
- super()__init__() : 부모 클래스의 인자를 사용하기 위해 초기화합니다.
- self.initUi() : Ui를 초기화합니다.
- self.show() : 초기화하고 만들어진 ALBA2.ui를 모니터에 전시합니다.
- self.pushButton.clicked.connect(self.btn_second_to_main) : pushButton을 클릭하면 self.btn_second_to_main 함수가 실행되게 합니다. pushButton은 앞서 ALBA2.ui에서 만든 ui이며, 프로그램을 닫기 위해 만든 것입니다.
- def btn_second_to_main(self)
self.close
버튼을 클릭하면 ALBA2.ui가 close(닫힘)되게 됩니다.
2. 생성한 secondwindow클래스 Main Window에서 실행하기
(1) secondwindow의 ALBA2.ui를 열기위한 push 버튼(시황 파악하기) CRR(objectName) 생성하기
(2) main 스크립트에 secndwindow 클래스 기능 가져오기
(3) 시황파악하기 pushButton인 CRR 클릭 시 ALBA2.ui가 전시되기 위한 함수 self.Crolling 시작하기
(4) def Crolling(self) 함수 이벤트 발생 시 secondwindow() 실행하기
위의 4가지를 완성하시면, main 스크립트에서 우리가 만든 secndwindow 클래스를 실행할 수 있습니다.
3. 요약
오늘은 앞으로 우리가 검색하여 획득한 뉴스, 시황, 각 경제지수 지표 등을 띄울 수 있는 두 번째 GUI(ALBA2.ui) 기본 구조를 세팅하였습니다. 특히 스크립트 및 ui를 생성하였으며, 두 정보를 합치는 작업까지 완료하였습니다. 다음 강의에서는 네이버나 기타 사이트에서 특정 데이터를 받아와 위험도 판단이 가능한 데이터를 ALBA2.ui에 전시해 보겠습니다.
그리고 설명을 최대한 간소하게 해 놓았는데 기초반의 [링크 : ui 만들기], [링크 : 기초반 7강]은 숙지해 주시기 바랍니다. 이해가 되지 않는 부분은 질문해 주시면 수정 및 보완 또는 답변 달아 드립니다.
혹시 기초반을 듣지 않으신 분들이 코딩을 하기에 벅차시다면... 아래와 같이 if __name....을 추가하시면 어느 스크립트에서든 gui화면을 띄울 수 있습니다.
* 기초반을 듣지 않으신 분들을 위한 코드
import sys # system specific parameters and functions : 파이썬 스크립트 관리
from PyQt5.QtWidgets import * # GUI의 그래픽적 요소를 제어 하단의 terminal 선택, activate py37_32, pip install pyqt5, 전부다 y
from PyQt5 import uic # ui 파일을 가져오기위한 함수
###################################################
from Qthread_4 import Thread4 # thread
###################################################
form_secondwindow = uic.loadUiType("ALBA2.ui")[0]
class secondwindow(QMainWindow, QWidget, form_secondwindow):
def __init__(self):
super(secondwindow, self).__init__()
self.initUi()
self.check_ADR()
self.pushButton.clicked.connect(self.btn_second_to_main)
def initUi(self):
self.setupUi(self)
def btn_second_to_main(self):
self.close() # 클릭시 종료됨.
def check_ADR(self):
print("ADR 정보 가져오기")
h4 = Thread4(self)
h4.start()
if __name__ == '__main__': # import된 것들을 실행시키지 않고 __main__에서 실행하는 것만 실행 시킨다.
# 즉 import된 다른 함수의 코드를 이 화면에서 실행시키지 않겠다는 의미이다.
app = QApplication(sys.argv) # PyQt5로 실행할 파일명을 자동으로 설정, PyQt5에서 자동으로 프로그램 실행
CH = secondwindow() # Main 클래스 myApp으로 인스턴스화
CH.show() # myApp에 있는 ui를 실행한다.
app.exec_() # 이벤트 루프
'주식 자동매매 강의 > 중급반(시황 및 차트 구현)' 카테고리의 다른 글
시황 파악(상승/하락) 및 투자 위험도 판단 프로그램(크롤링) 마지막 편 (8) | 2022.07.02 |
---|---|
원하는 뉴스 및 시황 데이터 받아와(크롤링, crowling) 자신만의 주식 위험도 프로그램 만들기(2) (7) | 2022.06.29 |
[특강] 웹크롤링(Web Crowling) 기초 개념과 코드 구현(with Python) (10) | 2022.06.27 |
[크롤링(crawling) 데이터] GUI 전시 및 모니터 스크린 정 가운데 전시하기 (12) | 2022.06.23 |
[크롤링(Crawling)] 이란 무엇이며, ADR 정보 가져오는 예제 코딩하기 (8) | 2022.06.22 |