PyQt上手教程(一)

(十)信号与槽

(1) 说明

信号和槽是Qt的核心内容

1.信号(signal)

其实就是事件(按钮点击,内容发生改变,窗口的关闭事件)或者是状态(check选中了, togglebutton切换)

当程序触发了某种状态或者发生了某种事件(比如:按钮点击了,内容改变等等),那么即可发射出来一个信号

2.槽(slot)

若想捕获这个信号,然后执行相应的逻辑代码,那么就需要使用到实际上是一个函数,当信号发射出来后,会执行与之绑定的函数

3.将信号与槽链接

为了能够实现,当点击某个按钮时执行某个逻辑,需要把具体的信号具体的槽函数绑定在一起

操作大体流程如下

对象.信号.connect(槽函数)

(2) 案例1:接收信号

(3) 案例2:自定义信号

除了接收Qt自带的信号之外,我们也可以自行定义信号,在合适的时机,自行 发射信号

自定义信号需要使用pyqtSignal来声明信号,并且需要在类中的函数之外声明

1.主程序

1.创建对象;

2.对象要死循环运行,监测事件,要更新界面

3.MyWindon继承了QWidget;

4.窗口要显示

2.窗口类

super().__init__() 调用父类

self.init_ui() 调用自己的初始化

这里要注意的几点:

1.声明自定义信号的时候,必须在类中定义,而不能在函数中定义

2.btn = QPushButton("开始检测", self)被触发后,才会调用check函数

3.关键的是self.my_signal.connect(self.my_slot)这里是怎么触发的

这里先看一下def check(self):函数

先解释一下enumerate( )函数

enumerate( ) 用来遍历列表里元素的下标和元素

"192.168.1.%d" % x for x in range(1, 255)

ip就是从192.168.1.1192.168.1.254之间挨个取值

i 就是列表的下标,取值范围从0-253

---------现在可以解释上述self.my_signal.connect(self.my_slot)触发问题-------------------

self.my_signal.emit(msg + "[发现漏洞]") # 相当于调用了my_slot函数

1.创建信号

2.绑定槽函数

3.在合适的位置发信号

4.槽函数执行

程序运行结果如下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值