自定义信号【重点】
除了接收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


微信扫一扫