【问题标题】:Qspinbox value changed signal only for arrows changesQspinbox 值更改信号仅用于箭头更改
【发布时间】:2019-05-15 03:18:57
【问题描述】:

我需要识别用户何时更改旋转框中的值,但前提是更改是使用箭头(根据步骤向上或向下)进行的。

我使用了 valueChanged 信号,但是当用户手动更改值(编辑数字)时也会发出这个信号,我想避免这种行为。

我正在使用 PyQt5

【问题讨论】:

    标签: python pyqt pyqt5 qspinbox


    【解决方案1】:

    在这种情况下,您可以通过覆盖mousePressEvent 方法来跟踪更改:

    from PyQt5 import QtCore, QtWidgets
    
    class SpinBox(QtWidgets.QSpinBox):
        upClicked = QtCore.pyqtSignal()
        downClicked = QtCore.pyqtSignal()
    
        def mousePressEvent(self, event):
            last_value = self.value()
            super(SpinBox, self).mousePressEvent(event)
            if self.value() < last_value:
                self.downClicked.emit()
            elif self.value() > last_value:
                self.upClicked.emit()
    
    if __name__ == '__main__':
        import sys
        app = QtWidgets.QApplication(sys.argv)
        s = SpinBox()
        l = QtWidgets.QLabel(alignment=QtCore.Qt.AlignCenter)
        w = QtWidgets.QWidget()
    
        s.upClicked.connect(lambda: l.setText("Up"))
        s.downClicked.connect(lambda: l.setText("Down"))
    
        lay = QtWidgets.QVBoxLayout(w)
        lay.addWidget(s)
        lay.addWidget(l)
        w.resize(320, w.sizeHint().height())
        w.show()
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 2018-06-01
      • 1970-01-01
      • 2011-09-11
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      相关资源
      最近更新 更多