【问题标题】:How to find the emitter Spinbox from a valueChanged Signal?如何从 valueChanged 信号中找到发射器 Spinbox?
【发布时间】:2014-02-14 17:35:35
【问题描述】:

我有几个 Spinboxes,如果值更改,我希望它们更改背景颜色。

使用此连接命令:

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

我的第一次尝试是:

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

问题是,“send.text()”返回的是改变后的值,而不是 spinbox 女巫发出的信号。 在有关 QDoubleSpinBox 的文档中,我搜索了诸如“setName”之类的内容,或者用于识别我的发件人旋转框的内容,但我没有找到任何内容。

【问题讨论】:

    标签: pyqt signals-slots sender


    【解决方案1】:

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

    所以只要写mySpinBox = self.sender() 就对了。

    【讨论】:

      【解决方案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(与它们的属性名称相同)。

      【讨论】:

        猜你喜欢
        • 2012-11-26
        • 2014-01-02
        • 1970-01-01
        • 2016-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-13
        • 2020-10-12
        相关资源
        最近更新 更多