이 과정을 담은 전체 코드는 다음과 같습니다. 혹시 코드에 있는 함수가 모두 다 이해되지 않더라도 큰 문제는 없습니다. 코드를 정확히 이해하지 못하더라도 큰 흐름을 먼저 익히고 모르는 코드는 그다음 찾아보면 됩니다.
Kiwoom.py
from PyQt5.QAxContainer import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class Kiwoom(QAxWidget):
def __init__(self):
super().__init__()
self._make_kiwoom_instance()
self._set_signal_slots()
self._comm_connect()
def _make_kiwoom_instance(self): ------ Kiwoom 클래스가 API를 사용할 수 있도록 등록하는 함수
self.setControl("KHOPENAPI.KHOpenAPICtrl.1")
def _set_signal_slots(self): ------ API로 보내는 요청들을 받아 올 슬롯을 등록하는 함수
self.OnEventConnect.connect(self._login_slot) ------ 로그인 시도 결과에 대한 응답을 _login_slot으로 받도록 설정
def _login_slot(self, err_code): ------ 로그인 시도 결과에 대한 응답을 얻는 함수
if err_code == 0:
print("connected")
else:
print("not connected")
self.login_event_loop.exit() ------ 로그인 시도 결과에 대한 응답 대기 종료
def _comm_connect(self): ------ 로그인 요청 신호를 보낸 이후 응답 대기를 설정하는 함수: 로그인 함수
self.dynamicCall("CommConnect()")
self.login_event_loop = QEventLoop() ------ 로그인 시도 결과에 대한 응답 대기 시작
self.login_event_loop.exec_()