PyQt5编程(14):传递数据给数据处理程序

指定一个处理程序后,就是将一个函数或方法的引用传递给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)

你可能感兴趣的:(PyQt5编程(14):传递数据给数据处理程序)