기존에 작성했던 부분에서 클래스화 하려는 부분만 별도로 파일로 만들었다.
이제 이 파일은 기능만 추가하면 된다.
import sys
from PyQt5.QtWidgets import *
from PyQt5.QAxContainer import *
import pythoncom
class OpenApi:
def __init__(self):
self.woom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
self.woom.OnEventConnect.connect(self.OnEventConnect)
self.login = False
def CommConnect(self):
self.woom.dynamicCall("CommConnect()")
while not self.login:
pythoncom.PumpWaitingMessages()
def GetMasterCodeName(self, code):
name = self.woom.dynamicCall("GetMasterCodeName(QString)", code)
return name
def GetCodeListByMarket(self, market):
codelist = self.woom.dynamicCall("GetCodeListByMarket(QString)", market)
return codelist
def OnEventConnect(self, err_code):
self.login = True
print("Success")
사실 작성을 하면서 동작이 안됐던 부분이 있었다.
바로 이 부분을 제외하면 핸들러가 없다고 동작을 하지 않는다.
while not self.login:
pythoncom.PumpWaitingMessages()
정확히 확인을 해봐야겠지만 아무래도 쓰레드 관련 문제가 있어 보인다.
추후 계속 개발을 진행하면서 별도의 쓰레드를 추가해야겠지만 이건 여기서 일단락 시켜놓고 진행한다.
이제 해당 클래스를 사용하려면 별도의 파이썬 파일을 만들고 import 시켜서 쓰면 된다.
import sys
from PyQt5.QtWidgets import *
from Kiwoom import OpenApi
import pythoncom
class App(QWidget):
def __init__(self):
super().__init__()
kiwoom = OpenApi()
kiwoom.CommConnect()
if __name__ == "__main__":
app = QApplication(sys.argv)
myApp = App()
app.exec_()
실제 실행은 새로 생성한 파일에서 동작하도록 만들면 파일 구분도 되고
훨씬 구분하기가 쉽다.
앞으로
기능은 Kiwoom.py
실행은 Stock.py
두 파일로 진행을 하려고 한다.
근데... 더 파일이 추가 될지도 모르려나..?? ^^;
우선적으로 기능을 먼저 추가해보려 한다.
반응형
'c. 파이썬' 카테고리의 다른 글
[파이썬 / 증권사 API활용](7) 조건식 불러오기 (0) | 2024.09.02 |
---|---|
[파이썬 / 증권사 API활용](6) 주식 정보 조회하기 (3) | 2024.09.01 |
[파이썬 / 증권사 API활용](5) No module named 'pythoncom' 에러 (0) | 2024.08.31 |
[파이썬 / 증권사 API활용](3) OpenAPI+ 메소드 사용 (0) | 2024.08.27 |
[파이썬 / 증권사 API활용](2) QAxcontainer 사용 및 키움 모의투자 신청 (0) | 2024.08.26 |
[파이썬 / 증권사 API활용](1) 키움 Open API+ 적용 (0) | 2024.08.25 |
[파이썬 / 매크로 만들기](8) 키보드 keyboard 입력으로 시작, 정지 (0) | 2024.08.24 |
[파이썬 / 매크로 만들기](7) Thread 실행 중 강제 종료 버튼 이벤트 (0) | 2024.08.23 |