【问题标题】:QSpinBox signal for arrow buttons箭头按钮的 QSpinBox 信号
【发布时间】:2018-06-01 04:17:43
【问题描述】:

我知道有人以类似的方式提出过这个问题,但我迷失在使用QSpinBox(或QDoubleSpinBox)时可以选择的众多信号的广阔世界中。我想将我的函数连接到 editingFinished 信号(很好,它工作得很好),但这也不会连接到箭头按钮 - 所以我也需要这些信号。我不想每次发出 valueChanged 时都调用我的函数 - 仅在编辑完成时或使用箭头时。

【问题讨论】:

  • 你的解释很混乱,你想要什么?
  • 您是否需要一个信号来通知您按下按钮是向上还是向下?
  • 正是如此,是的。哪个不重要,只是其中一个被按下的信号。

标签: python pyqt pyqt4 signals-slots qspinbox


【解决方案1】:

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

【讨论】:

  • 像魅力一样工作!完美的!非常感谢:)
猜你喜欢
  • 2020-05-22
  • 2019-05-15
  • 2021-07-22
  • 2019-01-25
  • 2013-04-24
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多