自定义信号【重点】
除了接收Qt自带的信号之外,我们也可以自定义信号,在合适的时机,自行发射信号。自定义信号需要用到 pyqtSingnal 来声明信号,并且需要在类中的函数之外声明。如果会自定义信号,那么信号和槽基本上也就掌握了。否则永远只会接收别人发出的信号。
案例2
# -*- coding = utf-8 -*- # @Time : 2022/9/6 10:49 # @Author : Arthur # @FileName : 信号与槽之自定义信号.py # @Software : Pycharm import sys import time from PyQt5.QtCore import pyqtSignal from PyQt5.QtWidgets import QApplication, QWidget, QPushButton class my_window(QWidget): # 声明一个信号 只能放在函数外面 my_signal = pyqtSignal(str) def __init__(self): super(my_window, self).__init__() self.init_ui() def init_ui(self): self.resize(300, 200) btn = QPushButton('开始监测', self) btn.setGeometry(100, 150, 100, 30) # 绑定按钮的点击,点击按钮则开始监测 btn.clicked.connect(self.check) # 绑定信号和槽 self.my_signal.connect(self.my_slot) def my_slot(self, msg): print(msg) def check(self): for i, ip in enumerate(['192.168.1.%d' % x for x in range(1, 255)]): print('模拟,正在检查 %s 上的漏洞' % ip, end='') if i % 5 == 0: # emit 表示发射信号 对象.信号.发射(参数) self.my_signal.emit('[发现漏洞]') pass else: self.my_signal.emit('') pass time.sleep(0.01) if __name__ == '__main__': app = QApplication(sys.argv) w = my_window() w.show() app.exec_()
原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/pyqt5changyongcaozuozhixinhaoyucao/.html