본문 바로가기
무모한 도전-주식 인공지능 만들기

pytrader를 만드는 실습에 들어가기-4-

by 인터넷떠돌이 2018. 11. 29.
반응형

안녕하세요?


자동으로 프로그램이 시작되는 것 까지 했으니, 이제 pytrader의 GUI를 만들어서 하나하나 뼈대를 만들어 가는 과정에 들어가 볼 차례가 되었습니다. 일단 먼저 해야 할 것은 Qt Designer를 이용해서 GUI를 디자인에 들어가는 것 부터 해야 할 듯 합니다. 그리고 나서 관련된 내용을 계속 파이썬 스크립트를 작성해 나가야 할듯 합니다.



먼저 Qt desinger를 실행시키도록 합니다. 예전 포스팅에서 언급하기도 했지만, 아나콘다3의 library->bin 폴더안에 들어간 다음에 designer를 선택해서 실행시키기만 하면, 어떻게 Qt designer를 실행시킬 수 있습니다.



그리고 나서 아이콘을 만들어 주는데, 일단 아이콘 자체는 pixabay에서 가지고 온 백터 그래픽과 일러스트를 합쳐서 만들어 보았습니다.



그 다음으로는 먼저 Qt designer의 작성중인 파일을 저장해야 하는데, 여기를 따로 언급하냐 하면 바로 저장되는 위치는 프로젝트가 있는 곳에다가 저장을 해야 하기 때문입니다.




이렇게 이전에 만들어 놓았는 PyQtTest라는 프로젝트 안에다가 아이콘의 png파일을 저장해 주도록 합니다. 그런데 아시는 분은 아시겠지만, 이것은 그렇게 까지 크게 중요한 부분이 아니기는 합니다.



다음으로는 위 스크린샷처럼 Qt designer에서 가장 오른쪽에 있는 속성 창을 제대로 살펴보면, windowIcon이라는 항목이 있는 것을 볼 수 있습니다. 이 부분에다가 테마 항목에서 방금 저장을 해둔 아이콘을 지정하도록 합니다.



그리고 나서 다음으로는 kiwoom.py에서 이전에 없던 메소드인 get_connect_state(self): 라는 메소드를 위 스크린샷처럼 set_input_value(): 메소드 위에다가 만들어 주도록 합니다.




그리고 이전에 타이핑을 했을 때 몰랐던 사소한 오타가 있었는데, 이것도 하는 김에 발견해서 제거해 주도록 해 봅니다.



그리고 나서 PyQtTest프로젝트에서 위 스크린샷처럼 pytrader라는 py파일을 만들어서, 이를 한번 적성해 보도록 합니다.



먼저 첫 화면입니다. 일단 PyQt5는 키움증권의 Open API를 이용하기 위해서 반드시 필요한 OCX를 이용하기 위해서 반드시 필요하기 때문에 import하도록 하고, 다음으로는 QTimer() 라는 메소드를 이용해서 타이머를 셋팅하도록 합니다. 여기서 start(1000)이라는 항목은 1초라는 의미가 됩니다. 그래서 1초당 한번 timeout이라는 신호가 발생하게 되는데, 이 경우에는 아래와 같은 형식으로 전달이 됩니다.


self.변수.신호.connect(self.함수명)


이런 형식으로 다음 포스팅에서 언급할 def timeout(): 이라는 메소드가 실행이 되게 됩니다. 즉 위 스크린샷의 의미를 굳이 해석하라고 하면, 바로 timer라는 변수에서 timeout이라는 신호가 나오면, 바로 timeout이라는 메소드를 실행하라고 합니다.


다음으로는 이 부분입니다.

self.kiwoom = kiwoom()

이렇게 해서, 키움(kiwoom.py)라는 모듈을 임포트(import)한 다음에, 이 모듈 전체의 객체를 생성하기 위해서 kiwoom()이라고 해서 객체를 만들라는 것을 명령하고, 이러한 상태가 되면 kiwoom.py에 있는 메소드를 가지고 실행할 수 있게 됩니다. 그래서 아래에 있는 self.kiwoom.comm_connect()라고 해서, kiwoom.py에 있는 comm_connect() 메소드를 가지고 와서 실행 시키게 됩니다.

반응형