gpt4 book ai didi

python - 如何确定 QSlider 移动的方向?

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:46 25 4
gpt4 key购买 nike

有没有办法获取 Qt 5.9 中 QSlider 移动的方向?

对于上下文,我正在制作一个 GUI,用户可以在其中调整一些 slider ,前提是总和低于 1。

slider 位于彼此之上,如果移动下面的 slider 之一,上面的 slider 不会移动。然而,下面的那些却是这样。

对于最后一个 slider ,用户应该不能将其向上移动,但应该允许其向下移动。

提前谢谢:)

最佳答案

QSlider没有这个属性,所以最合理的就是使用存储前一个位置的逻辑创建一个类,在下面的类中我实现了这个逻辑,我还添加了一个信号来异步通知你:

class Slider(QSlider):
Nothing, Forward, Backward = range(3)
directionChanged = pyqtSignal(int)
def __init__(self, parent=None):
QSlider.__init__(self, parent)
self._direction = Slider.Nothing
self.last = self.value()/self.maximum()
self.valueChanged.connect(self.onValueChanged)

def onValueChanged(self, value):
current = value/self.maximum()
direction = Slider.Forward if self.last < current else Slider.Backward
if self._direction != direction:
self.directionChanged.emit(direction)
self._direction = direction
self.last = current

def direction(self):
return self._direction

以下部分有一个使用此类的示例:

class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setLayout(QVBoxLayout())
slider = Slider(self)
slider.setOrientation(Qt.Horizontal)
self.layout().addWidget(slider)
slider.directionChanged.connect(self.onDirectionChanged)
slider.valueChanged.connect(self.onValueChanged)

def onDirectionChanged(self, direction):
if direction == Slider.Forward:
print("Forward")
elif direction == Slider.Backward:
print("Backward")

def onValueChanged(self, value):
dirstr = "Forward" if self.sender().direction() == Slider.Forward else "Backward"
print(value, dirstr)

if __name__ == '__main__':
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())

关于python - 如何确定 QSlider 移动的方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com