버튼을 눌렀을 때, 뭔가 작동한다.
-> 버튼을 눌렀을 때, 발생하는 특정 신호를 통해 특정 메소드를 실행시킨다.
-> 발생한 신호를 시그널, 실행되는 메소드가 슬롯 이다.
def button_clicked():
print("Clicked!")
app = QApplication(sys.argv)
window = QMainWindow()
button = QPushButton("Press Me!")
button.clicked.connect(button_clicked)
window.setCentralWidget(button)
window.show()
app.exec_()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.button = QPushButton("Press Me!")
self.button.clicked.connect(self.button_clicked)
self.setCentralWidget(self.button)
def button_clicked(self):
print("Clicked!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
위의 예시에서 button_clicked가 함수이고 슬롯이다.
그리고 button.clicked 가 시그널이다.
시그널.connect(슬롯) 과 같은 형태로 실행된다.
if __name__ == "__main__":
import numpy as np
app = QApplication(sys.argv)
x = np.linspace(0,1,50)
y1 = np.cos(4*np.pi*x)
y2 = np.cos(4*np.pi*x)*np.exp(-2*x)
canvasWidget = FigureCanvas(Figure(figsize=(6,4)))
ax = canvasWidget.figure.add_subplot(2,1,1)
ax.plot(x,y1,'r-*',lw=1)
ax.grid(True)
ax.set_ylabel(r'$sin(4 \pi x)$')
ax.axis([0,1,-1.5,1.5])
ax = canvasWidget.figure.add_subplot(2,1,2)
ax.plot(x,y2,'b--o',lw=1)
ax.grid(True)
ax.set_xlabel('x')
ax.set_ylabel(r'$ e^{-2x} sin(4\pi x) $')
ax.axis([0,1,-1.5,1.5])
canvasWidget.figure.tight_layout()
canvasWidget.show()
app.exec_()
class himatplot:
def __init__(self):
super().__init__()
x = np.linspace(0,1,50)
y1 = np.cos(4*np.pi*x)
y2 = np.cos(4*np.pi*x)*np.exp(-2*x)
canvasWidget = FigureCanvas(Figure(figsize=(6,4)))
ax = canvasWidget.figure.add_subplot(2,1,1)
ax.plot(x,y1,'r-*',lw=1)
ax.grid(True)
ax.set_ylabel(r'$sin(4 \pi x)$')
ax.axis([0,1,-1.5,1.5])
ax = canvasWidget.figure.add_subplot(2,1,2)
ax.plot(x,y2,'b--o',lw=1)
ax.grid(True)
ax.set_xlabel('x')
ax.set_ylabel(r'$ e^{-2x} sin(4\pi x) $')
ax.axis([0,1,-1.5,1.5])
canvasWidget.figure.tight_layout()
canvasWidget.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = himatplot()
app.exec_()
마찬가지로 matplot의 일반적인 출력도 다음과 같이 class화가 가능하다.