箭头按钮的QSpinBox信号

2024-09-30 12:28:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个问题也曾以类似的方式被问过,但当我使用QSpinBox(或QDoubleSpinBox)时,我正迷失在众多信号中。我想把我的函数连接到editingFinished信号(很好,它工作得很好),但是这不会连接到箭头按钮-所以我也需要这些信号。我不想每次发出valueChanged时都调用我的函数-只在编辑完成或使用箭头时调用。在


Tags: 函数编辑信号方式箭头按钮valuechangedqdoublespinbox
1条回答
网友
1楼 · 发布于 2024-09-30 12:28:54

一种方法是重新实现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_())

相关问题 更多 >

    热门问题