【python】PyQt5信号与槽原理剖析与应用实战
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QMainWindow, QPushButton
class CommunicateWindow(QMainWindow):
closeApp = pyqtSignal() # 定义一个信号
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个按钮,当按钮被按下时发射closeApp信号
self.button = QPushButton('关闭应用', self)
self.button.clicked.connect(self.emit_signal)
self.setCentralWidget(self.button)
self.show()
def emit_signal(self):
# 定义一个槽函数来连接信号
self.closeApp.emit() # 发射closeApp信号
class MainApp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('主应用')
self.show()
def receive_signal(self):
# 定义一个槽函数来接收信号,并处理关闭应用的逻辑
print('接收到关闭信号,准备关闭应用')
quit()
if __name__ == '__main__':
import sys
app = CommunicateWindow()
main_app = MainApp()
# 连接信号与槽
app.closeApp.connect(main_app.receive_signal)
# 运行应用
sys.exit(app.exec_())
这个简单的例子展示了如何在PyQt5中定义和使用信号与槽。CommunicateWindow
类中定义了一个信号closeApp
,当按钮被按下时,通过emit_signal
方法发射这个信号。MainApp
类中定义了一个槽函数receive_signal
来接收并处理这个信号。当信号被发射后,槽函数会被触发,并执行关闭应用的操作。这个例子简单明了地展示了信号与槽的工作原理,对于学习PyQt5的开发者有很好的教育意义。
评论已关闭