본문으로 바로가기

로그인 완료 후 종목코드로 요청하여 종목명과 거래량을 수신하는 간단한 예제 입니다.


평소때는 Right margin을 신경 안쓰고 코딩을 하는데..


블로그로 붙여넣기 하니깐 문제가 생기네요ㅠㅠ


라인을 보기 어렵다는 점!!!


계속 블로그에 코드를 붙여넣기 하려면 뭔가 해결책이 필요 할 것 같습니다. 힝







Github : https://github.com/ResetDy/Blog_Python/blob/master/TrRequest.py




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

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("DonDon Test")
        self.setGeometry(1600, 400, 1000, 1000)

        self.kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")

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

        btn2 = QPushButton("Click State", self)
        btn2.move(20, 70)
        btn2.clicked.connect(self.btn2_clicked)

        btn3 = QPushButton("조회", self)
        btn3.move(250, 150)
        btn3.clicked.connect(self.btn3_clicked)


        self.text_edit = QTextEdit(self)
        self.text_edit.setGeometry(10, 300, 500, 200)
        self.text_edit.setEnabled(False)

        self.kiwoom.OnEventConnect.connect(self.event_connect)
        self.kiwoom.OnReceiveTrData.connect(self.receive_trdata)

        label = QLabel('종목코드: ', self)
        label.move(20, 150)

        self.code_edit = QLineEdit(self)
        self.code_edit.move(140, 150)
        self.code_edit.setText("039490")

    def btn1_clicked(self):
        self.login()

    def btn2_clicked(self):
        if self.kiwoom.dynamicCall("GetConnectState()") == 0:
            self.statusBar().showMessage("Not Connect")
        else:
            self.statusBar().showMessage("Connected")

    def btn3_clicked(self):
        code = self.code_edit.text()
        self.text_edit.append("종목코드 : " + code)

        self.kiwoom.dynamicCall("SetInputValue(QString, QString)", "종목코드", code)

        self.kiwoom.dynamicCall("CommRqData(QString, QString, int, QString)", "opt10001_req", "opt10001", 0, "0101")

    def receive_trdata(self, screen_no, rqname, trcode, recordname, prev_next, data_len, err_code, msg1, msg2):
        if rqname == "opt10001_req":
            name = self.kiwoom.dynamicCall("CommGetData(QString, QString, QString, int, QString)", trcode, "", rqname, 0, "종목명")
            volume = self.kiwoom.dynamicCall("CommGetData(QString, QString, QString, int, QString)", trcode, "", rqname, 0, "거래량")

            self.text_edit.append("종목명 : " + name.strip())
            self.text_edit.append("거래량 : " + volume.strip())


    def login(self):
        self.kiwoom.dynamicCall("CommConnect()")

    def event_connect(self, err_code):
        if err_code == 0:
            self.text_edit.append("로그인 성공")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()



댓글을 달아 주세요