我有几个Spinbox,我希望它们改变背景颜色,如果值改变了。
使用此连接命令:
self.doubleSpinBox_1.valueChanged.connect(self.color)
我的第一次尝试是:
def color(self):
send = self.sender()
emitter = send.text()
问题是,“send.text()”返回改变的值,而不是旋转盒发出信号。 在关于QDoubleSpinBox的文档中,我搜索了类似“setName”的东西,或者用来识别我的sender-spinbox的东西,但我没找到任何东西。
答案 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
(它将与其属性名称相同)。