PyQt5 QSlider会被移动一个,具体取决于滑块的移动方向

问题描述 投票:0回答:1

我在PyQt5中使用QSlider元素时遇到了问题。以下是我的代码的简化版本,仅调用滑块。我有两种方法:一种是在移动时打印滑块值,另一种是在用户释放按钮后打印滑块值。]

如果将滑块拖动到某个位置(假设为10)并保持在该位置,则它应打印出10。如果释放它,则它将打印出11(如果从左侧拖动),或者打印出9(如果从右侧拖动。)>

我真的很茫然,为什么它会根据滑块的移动方向偏移1。我希望这两种方法打印出相同的数字。

from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QSlider
from PyQt5.QtCore import Qt
import sys


class GUIWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setGeometry(300, 0, 900, 900)

        # Slider
        self.eventSlider = QSlider(Qt.Horizontal)
        self.eventSlider.setFixedWidth(600)
        self.eventSlider.setSingleStep(1)
        self.eventSlider.setValue(0)
        self.eventSlider.setMinimum(0)
        self.eventSlider.setMaximum(20)
        self.eventSlider.setTickInterval(1)
        self.eventSlider.setTickPosition(QSlider.TicksBelow)
        self.eventSlider.sliderMoved.connect(self.slider_changing)
        self.eventSlider.sliderReleased.connect(self.slider_changed)

        GUILayout = QGridLayout()
        GUILayout.setContentsMargins(0, 0, 0, 0)
        GUILayout.addWidget(self.eventSlider, 0, 0, 1, 9, alignment=Qt.AlignCenter)
        self.setLayout(GUILayout)

    def slider_changing(self):
        print(self.eventSlider.value())

    def slider_changed(self):
        print(self.eventSlider.value())


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

我在PyQt5中使用QSlider元素时遇到了问题。以下是我的代码的简化版本,仅调用滑块。我有两种方法:一种是在移动滑块值时打印它,另一种是...

python pyqt pyqt5 qslider
1个回答
0
投票

您对QAbstractSlider的机制(这是QSlider之类的小部件的基类)的机制感到困惑。

让我们看一下文档中的说明。

© www.soinside.com 2019 - 2024. All rights reserved.