PyQt5常用操作之信号与槽

自定义信号【重点】

除了接收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

(0)
打赏 微信扫一扫 微信扫一扫
朋远方的头像朋远方
上一篇 2022年9月6日 上午9:43
下一篇 2022年9月6日 下午4:19

相关推荐

发表回复

登录后才能评论