指定一个处理程序后,就是将一个函数或方法的引用传递给connect()方法。如果需要传递数据给处理程序,可以按以下的方法:
创建一匿名函数,带参数调用该函数。如:
self.buttonl.clicked.connect (lambda: self.on_clicked_buttonl (10))
如果传递给处理程序的值是在程序运行过程中计算得到的,需要在匿名函数中指定一个参数来存储该值。
y=10
self.buttonl.clicked.connect (lambda x = y: self.on_clicked_buttonl(x))
传递一个实例引用给connect()方法,该实例中定义了call()函数。要传递的值作为构造函数的参数。如:
class MyClass():
def __init__(self,x=0):
self.x=x
def __call()__:
print("x=",self.x)
......
self.button1.clicked.connect(MyClass(10))
传递处理程序的引用和数据给partial()函数。例如:
from functools import partial
self.button1.clicked.connect(partial(self.on_clicked_button1,10))
在产生信号时有预定义的值,可在处理程序的传递参数之后获得。例如,点击鼠标的处理程序,有一个Boolean参数和额外传递的参数:
self.buttonl.clicked.connect (partial (self.on_clicked_button1, 10))
处理程序为:
def on_clicked_button1 (self, x, status):
print ("button1 pressed", x, status)
网友评论