2024-09-30 12:28:54 发布
网友
我知道这个问题也曾以类似的方式被问过,但当我使用QSpinBox(或QDoubleSpinBox)时,我正迷失在众多信号中。我想把我的函数连接到editingFinished信号(很好,它工作得很好),但是这不会连接到箭头按钮-所以我也需要这些信号。我不想每次发出valueChanged时都调用我的函数-只在编辑完成或使用箭头时调用。在
QSpinBox
QDoubleSpinBox
editingFinished
valueChanged
一种方法是重新实现stepBy method并发出自定义信号。这种方法的主要优点是它可以处理使用向上/向下键以及箭头按钮所做的更改。下面是一个基本演示:
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_())
一种方法是重新实现stepBy method并发出自定义信号。这种方法的主要优点是它可以处理使用向上/向下键以及箭头按钮所做的更改。下面是一个基本演示:
相关问题 更多 >
编程相关推荐