PyQt——信号与槽基础应用

	信号与槽有三种使用方法,第一种是内置信号与槽的使用,第二种是自定义信
号与槽的使用,第三是装饰器的信号与槽的使用。由于第三种方法本质上是第一
种方法的衍生

内置信号与槽的使用

所谓内置信号与槽的使用,是指在发射信号时,使用窗口控件的函数,而不是
自定义的函数。

     
from PyQt5.QtWidgets import  QPushButton ,  QApplication, QWidget 
from  PyQt5.QtWidgets import QMessageBox  
import sys 
   
app =  QApplication(sys.argv)
widget =  QWidget()

def showMsg():
     QMessageBox.information(widget, "信息提示框", "ok,弹出测试信息")
     
btn = QPushButton( "测试点击按钮", widget)
btn.clicked.connect( showMsg)
widget.show()
sys.exit(app.exec_())

自定义信号与槽的使用


from PyQt5.QtCore import QObject, pyqtSignal


# 信号对象
class QTypeSignal(QObject):
    # 定义一个信号
    sendmsg = pyqtSignal(object)

    def __init__(self):
        super(QTypeSignal, self).__init__()

    def run(self):
        # 发射信号
        self.sendmsg.emit('Hello Pyqt5')


# 槽对象          
class QTypeSlot(QObject):
    def __init__(self):
        super(QTypeSlot, self).__init__()

        # 槽对象里的槽函数

    def get(self, msg):
        print("QSlot get msg => " + msg)


if __name__ == '__main__':
    send = QTypeSignal()
    slot = QTypeSlot()
    # 1
    print('--- 把信号绑定到槽函数 ---')
    send.sendmsg.connect(slot.get)
    send.run()

    # 2
    print('--- 把信号断开槽函数 ---')
    send.sendmsg.disconnect(slot.get)
    send.run()

# -*- coding: utf-8 -*-


from PyQt5.QtCore import QObject , pyqtSignal

#信号对象
class QTypeSignal(QObject):
    #定义一个信号
	sendmsg = pyqtSignal( str,str)
      
	def __init__( self):
		super( QTypeSignal, self).__init__()
            
	def run( self):
        # 发射信号
		self.sendmsg.emit('第一个参数','第二个参数')
          
# 槽对象          
class QTypeSlot(QObject):
	def __init__( self):
		super( QTypeSlot, self).__init__()
    
    # 槽对象里的槽函数      
	def get(self, msg1, msg2):
		print("QSlot get msg => " + msg1 + ' ' + msg2)


if __name__ == '__main__':
	send = QTypeSignal()
	slot = QTypeSlot()
   #1 
	print('--- 把信号绑定到槽函数 ---')    
	send.sendmsg.connect( slot.get)
	send.run()
    
    #2
	print('--- 把信号断开槽函数 ---')        
	send.sendmsg.disconnect( slot.get )
	send.run()   


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值