[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_()
댓글
댓글 쓰기