"파이썬을 이용한 시스템 트레이딩" (https://wikidocs.net/book/110) 문서를 따라하던 중에 약간의 오류가 발생하였다.
확인해 보니 , 해당 자료는 PyQt4 기준인데, 내 PC의 Anaconda는 PyQt5 가 인스톨되어 있었다.
PyQt5에는 이벤트 처리 시 connect 함수가 다르게 호출되어야 한다.
PyQt4 에서는 QMainWindow 를 상속받아서 self.connect 함수의 인자에 이벤트를 발생 시킨 객체명, 발생 이벤트명, 이벤트 처리기에서 수행 함수명을 기재한다. self.connect(self.pushButton, SIGNAL("clicked()"),self.btn_clicked) 와 같이 호출한다.
PyQt5 에서는 객체의 이벤트에서 connect 함수를 호출하고 인자에 이벤트 처리기에서 수행하는 함수를 기재한다.
self.pushButton.clicked.connect(self.btn_clicked) 와 같이 호출한다.
아래는 PyQt4 의 예제임.
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
form_class = uic.loadUiType("main_window.ui")[0]
class MyWindow(QMainWindow , form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
#pushButton은 이벤트를 발생시킨 QPushButton 객체명,
#SIGNAL("clicked")는 QPushbutton의 클릭 함수,
#self.btn_clicked 는 QPushbutton 클릭시 Event 처리기에서 수행하는 함수
self.connect(self.pushButton, SIGNAL("clicked()"),self.btn_clicked)
def btn_clicked(self):
QMessageBox.about(self,"message","clicked")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
form_class = uic.loadUiType("main_window.ui")[0]
class MyWindow(QMainWindow , form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
#pushButton은 이벤트를 발생시킨 QPushButton 객체명,
#SIGNAL("clicked")는 QPushbutton의 클릭 함수,
#self.btn_clicked 는 QPushbutton 클릭시 Event 처리기에서 수행하는 함수
self.connect(self.pushButton, SIGNAL("clicked()"),self.btn_clicked)
def btn_clicked(self):
QMessageBox.about(self,"message","clicked")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
아래는 PyQt5 의 예제임.
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import signal
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("main_window.ui")[0]
class MyWindow(QMainWindow, form_class):
def __init__(self):
super().__init__()
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import signal
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("main_window.ui")[0]
class MyWindow(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
#객체의 이벤트에서 connect 함수를 호출하고 인자에 이벤트 처리기에서 수 행하는 함수를 기재한다.
self.pushButton.clicked.connect(self.btn_clicked)
def btn_clicked(self):
QMessageBox.about(self, "message", "clicked")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
def btn_clicked(self):
QMessageBox.about(self, "message", "clicked")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
'개발 > Python' 카테고리의 다른 글
with.. as 절의 사용법 (0) | 2016.09.21 |
---|---|
Python mmap(Memory Mapped File) 함수 (0) | 2016.09.20 |
Numpy array 를 shape로 차원확인 하기 (0) | 2016.09.19 |
Python에서는 증감연산자 ++,-- 가 없다 (0) | 2016.09.19 |
파이썬 2->3 버전에서 print 함수 변경 사항 (0) | 2016.09.08 |