Python Qspinbox值更改信号仅用于箭头更改

Python Qspinbox值更改信号仅用于箭头更改,python,pyqt,pyqt5,qspinbox,Python,Pyqt,Pyqt5,Qspinbox,我需要识别用户何时更改spinbox中的值,但仅当更改是使用箭头进行的(根据步骤向上或向下) 我使用了valueChanged信号,但当用户手动更改值(编辑数字)时,也会显示此信号,我希望避免这种行为 我使用的是PyQt5,在这种情况下,您可以通过覆盖mousePressEvent方法来跟踪更改: from PyQt5 import QtCore, QtWidgets class SpinBox(QtWidgets.QSpinBox): upClicked = QtCore.pyqtS

我需要识别用户何时更改spinbox中的值,但仅当更改是使用箭头进行的(根据步骤向上或向下)

我使用了valueChanged信号,但当用户手动更改值(编辑数字)时,也会显示此信号,我希望避免这种行为


我使用的是PyQt5,在这种情况下,您可以通过覆盖
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_())
从PyQt5导入QtCore、QtWidgets
类SpinBox(qtwidts.QSpinBox):
upClicked=QtCore.pyqtSignal()
向下单击=QtCore.pyqtSignal()
def鼠标压力事件(自身、事件):
最后一个值=self.value()
超级(SpinBox,self).mousePressEvent(事件)
如果self.value()最后一个值:
self.upClicked.emit()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
导入系统
app=qtwidts.QApplication(sys.argv)
s=SpinBox()
l=qtwidts.QLabel(alignment=QtCore.Qt.AlignCenter)
w=qtwidts.QWidget()
s、 upClicked.connect(lambda:l.setText(“Up”))
s、 向下单击.connect(lambda:l.setText(“向下”))
lay=qtwidts.QVBoxLayout(w)
lay.addWidget(s)
lay.addWidget(l)
w、 调整大小(320,w.sizeHint().height())
w、 show()
sys.exit(app.exec_())