QSlider只提供整数范围
滑块接受Tab键的焦点,并同时提供了一个鼠标滚轮和键盘接口。键盘接口如下:
Left/Right 移动水平滑块一个步长。
Up/Down 移动垂直滑块一个步长。
PageUp 上移一页。
PageDown 下移一页。
Home 移动至起始位置(最小值)。
End 移动至结束位置(最大值)
1 import sys 2 from PyQt5.QtCore import Qt 3 from PyQt5.QtGui import QFont 4 from PyQt5.QtWidgets import QApplication, QWidget, QSlider, QLabel, QVBoxLayout, QHBoxLayout 5 6 7 class Demo(QWidget): 8 def __init__(self): 9 super(Demo, self).__init__() 10 self.slider_1 = QSlider(Qt.Horizontal, self) # 实例化滚动条 11 #Qt.Hrizontal 水平的滑动条 12 #Qt.Vertical 垂直的滑动条 13 self.slider_1.setRange(0, 100) #设置范围 14 self.slider_1.valueChanged.connect(lambda: self.on_change_func(self.slider_1)) 15 #当滚动条的值发生变化时发出信号 16 self.slider_2 = QSlider(Qt.Vertical, self) 17 self.slider_2.setMinimum(0) # 设置最小值 18 self.slider_2.setMaximum(100) # 设置最大值 19 self.slider_2.valueChanged.connect(lambda: self.on_change_func(self.slider_2)) 20 self.label = QLabel('0', self) 21 self.label.setFont(QFont('Arial Black', 20)) 22 self.h_layout = QHBoxLayout() 23 self.v_layout = QVBoxLayout() 24 self.h_layout.addWidget(self.slider_2) 25 self.h_layout.addStretch(1) 26 self.h_layout.addWidget(self.label) 27 self.h_layout.addStretch(1) 28 self.v_layout.addWidget(self.slider_1) 29 self.v_layout.addLayout(self.h_layout) 30 self.setLayout(self.v_layout) 31 self.slider_1.sliderPressed.connect(self.f) #按下滑块时发射此信号 32 self.slider_1.sliderMoved.connect(self.f1) #拖动滑块时发出信号 33 self.slider_1.sliderReleased.connect(self.f2) #释放滑块时发射此信号 34 35 def f2(self): 36 print('释放滑块') 37 38 def f1(self): 39 print('拖动了滑块') 40 41 def f(self): 42 print('按下了滑块') 43 44 45 def on_change_func(self, slider): 46 if slider == self.slider_1: 47 self.slider_2.setValue(self.slider_1.value()) 48 #setValue 设置滚动条的值 49 #self.slider_1.value() 返回滚动条的值 50 self.label.setText(str(self.slider_1.value())) 51 else: 52 self.slider_1.setValue(self.slider_2.value()) 53 self.label.setText(str(self.slider_2.value())) 54 55 56 if __name__ == '__main__': 57 app = QApplication(sys.argv) 58 demo = Demo() 59 demo.show() 60 sys.exit(app.exec_())