Python 用于箭头按钮的QSpinBox信号
我知道有人以类似的方式问过我这个问题,但当我使用Python 用于箭头按钮的QSpinBox信号,python,pyqt,pyqt4,signals-slots,qspinbox,Python,Pyqt,Pyqt4,Signals Slots,Qspinbox,我知道有人以类似的方式问过我这个问题,但当我使用QSpinBox(或QDoubleSpinBox)时,我正在茫然于众多信号的世界中。我想将我的函数连接到editingFinished信号(很好,它工作得很好),但这也不会连接到箭头按钮-因此我也需要这些信号。我不想在每次发出valueChanged时调用我的函数-仅在编辑完成或使用箭头时调用。一种方法是重新实现并发出自定义信号。这种方法的主要优点是,它可以处理使用向上/向下键以及箭头按钮所做的更改。下面是一个基本演示: import sys fr
QSpinBox
(或QDoubleSpinBox
)时,我正在茫然于众多信号的世界中。我想将我的函数连接到editingFinished
信号(很好,它工作得很好),但这也不会连接到箭头按钮-因此我也需要这些信号。我不想在每次发出valueChanged
时调用我的函数-仅在编辑完成或使用箭头时调用。一种方法是重新实现并发出自定义信号。这种方法的主要优点是,它可以处理使用向上/向下键以及箭头按钮所做的更改。下面是一个基本演示:
import sys
from PyQt4 import QtCore, QtGui
class SpinBox(QtGui.QSpinBox):
stepChanged = QtCore.pyqtSignal()
def stepBy(self, step):
value = self.value()
super(SpinBox, self).stepBy(step)
if self.value() != value:
self.stepChanged.emit()
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
self.spin = SpinBox()
self.spin.editingFinished.connect(self.handleSpinChanged)
self.spin.stepChanged.connect(self.handleSpinChanged)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.spin)
def handleSpinChanged(self):
print(self.spin.value())
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(600, 100, 150, 50)
window.show()
sys.exit(app.exec_())
你的解释很混乱,你想要什么?你想要一个信号来通知你是否按下了按钮?没错,是的。哪一个不重要,只是其中一个被按下的信号。就像一个符咒!完美的非常感谢:)