将标签放置在滑块手柄旁边

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

我想要在滑块手柄附近有一个标签,用于显示当前值。我使用了论坛上提供的代码并尝试将其适配为Python

from PyQt5 import QtCore, QtGui, QtWidgets

class test(QtWidgets.QWidget):

    def __init__(self, parent = None):
        super().__init__(parent)
        self.main_layout = QtWidgets.QHBoxLayout(self)
        self.main_layout.setContentsMargins(0, 0, 0, 0)
        self.main_layout.setSpacing(0)
        self.slider = QtWidgets.QSlider(QtCore.Qt.Vertical,self)
        self.slider.setMaximum(100)
        self.slider.setMinimum(0)
        self.slider.setTracking(True)
        self.label= QtWidgets.QLabel(self)
        self.label.setText("label")
        self.main_layout.addWidget(self.slider,0,QtCore.Qt.AlignLeft)
        self.main_layout.addWidget(self.label,0,QtCore.Qt.AlignBottom)
        self.updateLabel(0)
        self.setLayout(self.main_layout)
        self.slider.valueChanged.connect(self.updateLabel)


    def updateLabel(self,value):
        height= QtWidgets.QStyle.sliderPositionFromValue(0,100,self.slider.value(),self.slider.height()-self.label.height(), True)
        self.label.move(self.slider.width(), height)
        self.label.setText(str(value))


    def resizeEvent(self,ev):

        self.updateLabel(self.slider.sliderPosition())


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    ui = test()
    ui.show()
    sys.exit(app.exec_())

结果,我得到了一个带有值的标签,但它始终显示在窗口底部。

wrong label position

调整窗口大小后,标签就会移动到正确的位置。

correct label position

我错过了什么吗?

python pyqt5 qtgui qslider
1个回答
0
投票

self.updateLabel(put an initial value for the slider)
函数末尾尝试
def __init__(self, parent = None)

希望它能起作用。

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