import sys
from PyQt5.Qt import *
class CSlider(QSlider):
def __init__(self, *__args):
super(CSlider, self).__init__(*__args)
self.components()
def components(self):
self.label = QLabel(self)
# self.label_position()
def label_position(self):
self.label.setText(str(self.value()))
self.label.adjustSize()
self.position = [int(round((self.width() - self.label.width()) / 2, 0)),
int(round(
(self.height() - self.label.height()) * ((self.maximum() - self.value()) / self.maximum()),
0))]
self.label.move(self.position[0], self.position[1])
def mousePressEvent(self, ev) -> None:
self.label_position()
return super().mousePressEvent(ev)
# def mouseMoveEvent(self, ev) -> None:
# self.label_position()
# return super().mouseMoveEvent(ev)
class Window(QWidget):
def __init__(self):
super().__init__()
self.setup_ui()
def setup_ui(self):
self.setWindowTitle("Qt桌面应用程序")
self.resize(300, 300)
self.slider = CSlider(self)
self.slider.move(50, 50)
self.slider.setTickPosition(QSlider.TicksBothSides)
def value_changed(value):
self.slider.label_position()
self.slider.valueChanged.connect(value_changed)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
window.slider.label_position()
sys.exit(app.exec_())