Anonymous
Размещение метки рядом с ручкой ползунка
Сообщение
Anonymous » 02 дек 2024, 17:06
Мне нужна метка рядом с ручкой ползунка, отображающая текущее значение. Я использовал код, представленный на форуме, и попытался адаптировать его под 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_())
В результате я получаю метку со значением, но она всегда отображается внизу окна.
Как только я изменяю размер окна, метка перемещается в правильное место.
Я что-то пропустил?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... der-handle
1733148372
Anonymous
Мне нужна метка рядом с ручкой ползунка, отображающая текущее значение. Я использовал код, представленный на форуме, и попытался адаптировать его под Python [code]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_()) [/code] В результате я получаю метку со значением, но она всегда отображается внизу окна. [img]https://i.sstatic.net/oTp8fVLA.png[/img] Как только я изменяю размер окна, метка перемещается в правильное место. [img]https://i.sstatic.net/i9wzbXj8.png[/img] Я что-то пропустил? Подробнее здесь: [url]https://stackoverflow.com/questions/79244132/placing-label-next-to-a-slider-handle[/url]