pyqt 槽任意参数_pyqt中信号与槽的参数传递。

摘自  http://www.cnblogs.com/caomingongli/archive/2011/09/19/2180904.html

pyqt中信号与槽的参数传递。

当信号与槽函数的参数数量相同时,它们参数类型要完全一致。

信号与槽不能有缺省参数。

当信号的参数与槽函数的参数数量不同时,只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略。

此外,在不进行参数传递时,信号槽绑定时也是要求信号的参数数量大于等于槽函数的参数数量。这种情况一般是一个带参数的信号去绑定一个无参数的槽函数。

可以出传递的参数类型有很多种:str、int、list、object、float、tuple、dict等等

槽的方法定义,主要是指明类型

class MyWidget(QWidget):

...

@PyQt4.QtCore.pyqtSlot()

def setValue_NoParameters(self):

'''无参数槽方法'''

pass

@PyQt4.QtCore.pyqtSlot(int)

def setValue_OneParameter(self,nIndex):

'''一个参数(整数)槽方法'''

pass

@PyQt4.QtCore.pyqtSlot(str)

def setValue_OneParameter_String(self,szIndex):

'''一个参数(字符串)的槽方法'''

pass

@PyQt4.QtCore.pyqtSlot(int,int)

def setValue_TwoParameters(self,x,y):

'''二个参数(整数,整数)槽方法'''

pass

@PyQt4.QtCore.pyqtSlot(int,str)

def setValue_TwoParameters_String(self,x,szY):

'''二个参数(整数,字符串)槽方法'''

pass

信号的方法定义

class MyWidget(QWidget):

Signal_NoParameters = PyQt4.QtCore.pyqtSignal() # 无参数信号

Signal_OneParameter = PyQt4.QtCore.pyqtSignal(int) # 一个参数(整数)的信号

Signal_OneParameter_Overload = PyQt4.QtCore.pyqtSignal([int],[str]) # 一个参数(整数或者字符串)重载版本的信号

Signal_TwoParameters = PyQt4.QtCore.pyqtSignal(int,str) # 二个参数(整数,字符串)的信号

Signal_TwoParameters_Overload = PyQt4.QtCore.pyqtSignal([int,int],[int,str]) # 二个参数([整数,整数]或者[整数,字符串])重载版本的信号

信号的触发

class MyWidget(QWidget):

...

def mousePressEvent(self, event):

self.Signal_NoParameters.emit() # 焕发无参数信号

self.Signal_OneParameter.emit(1) # 焕发一个参数(整数)的信号

self.Signal_OneParameter_Overload.emit(1) # 焕发一个参数(整数)重载版本的信号

self.Signal_OneParameter_Overload.emit("abc") # 焕发一个参数(字符串)重载版本的信号

self.Signal_TwoParameters.emit(1,"abc") # 焕发二个参数(整数,字符串)的信号

self.Signal_TwoParameters_Overload.emit(1,2) # 焕发二个参数(整数,整数)重载版本的信号

self.Signal_TwoParameters_Overload.emit(1,"abc") # 焕发二个参数(整数,字符串)重载版本的信号

信号触发的结果传给槽(注意格式,信号实际的值在emit中,连接的槽,只传名称)

mousePressEvent被调用时,触发了Signal_OneParameter_Overload信号,传递参数1,然后信号又触发了setValue_OneParameter。类似一个传递的过程

self.Signal_OneParameter[int].connect(self.setValue_OneParameter)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值