希望实现一个在`connect`里面的函数可以输入变量的功能,类似于`self.PyDMSpinbox.valueChanged.connect(self.test_color(n))`

问题遇到的现象和发生背景

Python PyQt5 UI 控件信号问题

原始可运行代码如下

from pydm import Display
class example(Display):
    def __init__(self,parent = None,args = []):
        super(example,self).__init__(parent = parent,args = args)
        self.ui.PyDMSpinbox.valueChanged.connect(self.test_color)
    def ui_filename(self):
        return 'image.ui'
    def ui_filepath(self):
        return path.join(path.dirname(path.realpath(__file__)),self.ui_filename())
    def test_color(self):
        mapMax = float(self.ui.PyDMSpinbox.text())
        self.PyDMImageView.setProperty("colorMapMax", mapMax)

原始代码运行结果如下:

img

希望实现在spinbox值改变后,connect后面的函数可以有输入变量,当我有很多spinbox控件时,就可以只调用test_color()一个函数,而不是每多复制一个控件就多一个test_color()函数

from pydm import Display
class example(Display):

    def __init__(self,parent = None,args = []):
        super(example,self).__init__(parent = parent,args = args)
        self.ui.PyDMSpinbox.valueChanged.connect(self.test_color(mapMax = float(self.ui.PyDMSpinbox.text())))

    def ui_filename(self):
        return 'image.ui'

    def test_color(self,mapMax=255):
        self.PyDMImageView.setProperty("colorMapMax", mapMax)

spinbox控件的定义一个信号槽,当改变spinbox值就触发,将spinbox值写入一个类属性,其他控制直接调用这个类属性即可