Appearance
信号与槽
信号是发生的事件, 槽是事件的处理, 使用槽进行捕获事件, 执行和槽绑定的函数
一般需要把信号和槽进行绑定
python
对象.信号.connect(槽函数)
信号可以是Qt自带的, 也可以使我们发送的
python
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(800, 200, 300, 300)
self.setWindowTitle("Signal and Slot")
btn = QPushButton("Click me", self)
btn.move(10, 10)
btn.clicked.connect(self.click_my_btn)
def click_my_btn(self, arg):
print("press btn", arg)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWindow()
w.show()
app.exec()
使用自己的信号
python
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class MyWindow(QMainWindow):
# 创建一个信号, 这一个信号只能
my_signal = pyqtSignal(str)
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.resize(300, 200)
btn = QPushButton("begin", self)
btn.setGeometry(10, 10, 100, 30)
btn.clicked.connect(self.check)
self.my_signal.connect(self.my_slot)
def check(self):
"""
发送一个信号
"""
self.my_signal.emit("hello")
def my_slot(self, msg):
"""
槽函数
"""
print(msg)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWindow()
w.show()
app.exec()