滑动条QSlider

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_())

 

posted @ 2019-02-10 22:56  天子骄龙  阅读(443)  评论(0编辑  收藏  举报