我想要在滑块手柄附近有一个标签,用于显示当前值。我使用了论坛上提供的代码并尝试将其适配为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_())
结果,我得到了一个带有值的标签,但它始终显示在窗口底部。
调整窗口大小后,标签就会移动到正确的位置。
我错过了什么吗?
在
self.updateLabel(put an initial value for the slider)
函数末尾尝试 def __init__(self, parent = None)
。