[Python_trading] 파이썬_PyQt 활용한 GUI(2)

[Python_trading] 파이썬_PyQt 활용한 GUI(2)

#pyqt_event.py

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyStock')
        self.setGeometry(300,300,300,400)

        btn1 = QPushButton('Click me',self)
        btn1.move(20,20)
        #이벤트, 이벤트 처리할 메서드를 connect메서드로 연결한다.
        btn1.clicked.connect(self.btn1_clicked) 
        

    def btn1_clicked(self): #사용자가 버튼을 클릭하면 메시지를 발생시키는 이벤트 메서드
        QMessageBox.about(self,'message','Btn1_clicked')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()

키움증권 로그인하기

#login_api.py

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QAxContainer import *

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyStock')
        self.setGeometry(300,300,300,150)
        #키움증권의 클래스를 사용하려면 PyQt5의 QAxWidget 클래스를 사용하여 인스턴스를         생성해야 한다.
        self.kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")

        btn1= QPushButton("Login",self)
        btn1.move(20,20)
        btn1.clicked.connect(self.btn1_clicked)

        btn2 = QPushButton('Check state',self)
        btn2.move(70,70)
        btn2.clicked.connect(self.btn2_clicked)

    def btn1_clicked(self):
        ret = self.kiwoom.dynamicCall("CommConnect()") 
        #CommConnect() : 키움에서 제공하는 로그인 윈도우 실행 메서드, 호출하기만 하면 
        실행된다.
        #CommConnect 는 인자를 받지 않고,, 반환 값을 통해 로그인 성공여불르 확인할 수 
        있다. (0:성공, 음수:실패)
        #dynamicCall 메서드는  원하는 메서드를 호출할 수 있음(AQxBase클래스의 메서드)
        #QAxWidget 클래스는 QAxBase 를 상속받았으므로 kiwoom 인스턴스는 dynamicCall
        메서드를 사용할 수 있다.

    def btn2_clicked(self):
        #접속상태를 반환하는 GetConnectState 메서드 (0:미연결,1:연결)
        if self.kiwoom.dynamicCall('GetConnectState()')==0: #미연결시 0을 리턴하므로
            self.statusBar().showMessage('Not connect')
        else:
            self.statusBar().showMessage('Connected')
        # OnEventConnect 이벤트를 사용한다면 GetConnectState를 사용하지 않아도 된다.

if __name__ == '__main__':
    app=QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()


이벤트 처리를 활용한 키움증권 로그인

#login_event_api.py

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QAxContainer import *

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyStock')
        self.setGeometry(300,300,300,150)
        #키움증권의 클래스를 사용하려면 PyQt5의 QAxWidget 클래스를 사용하여 인스턴스를         생성해야 한다.
        self.kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
        self.kiwoom.dynamicCall('CommConnect()') 
        #window가 생성됨과 동시에 로그인 창도 함께 화면에 표시

        self.text_edit = QTextEdit(self)
        self.text_edit.setGeometry(10,60,280,80)
        self.text_edit.setEnabled(False)
        #이벤트와 이벤트 처리 메서드를 연결하기 위해서는 connect() 사용
        self.kiwoom.OnEventConnect.connect(self.event_connect) 
        #onEventConnect: 서버 접속 여부 이벤트(0:성공,음수:실패)
    def event_connect(self,err_code):
        if err_code ==0:
            self.text_edit.append('Login Success!')

if __name__ == '__main__':
    app=QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()



댓글