箭头按钮的 QSpinBox 信号
Posted
技术标签:
【中文标题】箭头按钮的 QSpinBox 信号【英文标题】:QSpinBox signal for arrow buttons 【发布时间】:2018-06-01 04:17:43 【问题描述】:我知道有人以类似的方式提出过这个问题,但我迷失在使用QSpinBox
(或QDoubleSpinBox
)时可以选择的众多信号的广阔世界中。我想将我的函数连接到 editingFinished
信号(很好,它工作得很好),但这也不会连接到箭头按钮 - 所以我也需要这些信号。我不想每次发出 valueChanged
时都调用我的函数 - 仅在编辑完成时或使用箭头时。
【问题讨论】:
你的解释很混乱,你想要什么? 您是否需要一个信号来通知您按下按钮是向上还是向下? 正是如此,是的。哪个不重要,只是其中一个被按下的信号。 【参考方案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_())
【讨论】:
像魅力一样工作!完美的!非常感谢:)以上是关于箭头按钮的 QSpinBox 信号的主要内容,如果未能解决你的问题,请参考以下文章
QSpinbox editingFinished 上/下箭头上的信号
当我按下 QSpinbox 中的箭头时,如何防止双 valueChanged 事件?
Python Qt GUI设计:QSpinBox计数器类(基础篇—15)