如何从valueChanged信号中找到发射器Spinbox?

时间:2014-01-23 22:23:39

标签: pyqt signals-slots sender

我有几个Spinbox,我希望它们改变背景颜色,如果值改变了。

使用此连接命令:

self.doubleSpinBox_1.valueChanged.connect(self.color)

我的第一次尝试是:

def color(self):
   send = self.sender()
   emitter = send.text()

问题是,“send.text()”返回改变的值,而不是旋转盒发出信号。 在关于QDoubleSpinBox的文档中,我搜索了类似“setName”的东西,或者用来识别我的sender-spinbox的东西,但我没找到任何东西。

2 个答案:

答案 0 :(得分:4)

self.sender() 发出信号的旋转框。您实际上正在调用doubleSpinBox_1.text(),这当然会为您提供旋转框中的文本。

所以,只需写下mySpinBox = self.sender()即可。

答案 1 :(得分:2)

您只需使用is运算符来识别发件人:

def color(self):
    spinbox = self.sender()
    if spinbox is self.doubleSpinBox_1:
        # do something with doubleSpinBox_1
    elif spinbox is self.doubleSpinBox_2:
        # do something with doubleSpinBox_1
    ...

但如果真的想要给你的小部件命名,你可以使用setObjectName

    self.doubleSpinBox_1.setObjectName('spinbox1')
    print(self.doubleSpinBox_1.objectName())

PS:如果您的小部件是通过Qt Designer创建的,它们将自动设置objectName(它将与其属性名称相同)。