A QSlider is a widget that has a simple handle. This handle can be pulled back and forth. This way we are choosing a value for a specific task. Sometimes using a slider is more natural than entering a number or using a spin box.
就像窗体最右边的滑条,我们可以上下移动,页面也会跟着移动。
In our example we will show one slider and one label. The label will display an image. The slider will control the label.
代码:
# coding='utf-8'
from PyQt5.QtWidgets import QApplication, QWidget,\
QSlider, QLabel
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
import sys
class Gui(QWidget):
def __init__(self):
super(Gui, self).__init__()
self.start()
def start(self):
# 构造函数:QSlider(Qt.Orientation,\
# parent: QWidget = None)
# 利用构造函数创建一个水平方向的,父组件是QWidget的滑条
sld = QSlider(Qt.Horizontal, self)
# 让滑条组件不接受焦点(所谓焦点就是你按下tab,\
# 焦点就会自动切换到能够接受焦点的组件上去)
# 有点类似于Tkinter组件的属性:takefocus=False
sld.setFocusPolicy(Qt.NoFocus)
# 设置滑条的位置和大小
sld.setGeometry(30, 40, 100, 30)
# 将信号(valueChanged)(表现为int)和槽(self.change_value)相联系
sld.valueChanged[int].connect(self.change_value)
# 创建父组件是QWidget的label
self.label = QLabel(self)
# 将label的内容设置为pixmap图像
self.label.setPixmap(QPixmap('./图片素材/音量/27.png'))
self.label.setGeometry(160, 40, 80, 30)
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('滑条演示')
self.show()
def change_value(self, value):
# value是int类型(前面信号那里设置的) --> 范围是0->99
# 当拉动滑条到不同的程度时显示不同的图片,\
# 当把这个范围刻画的越详细,最后表现的结果越好
if value == 0:
self.label.setPixmap(QPixmap('./图片素材/音量/27.png'))
elif 0 < value <= 30:
self.label.setPixmap(QPixmap('./图片素材/音量/24.png'))
elif 30 < value <= 80:
self.label.setPixmap(QPixmap('./图片素材/音量/25.png'))
else:
self.label.setPixmap(QPixmap('./图片素材/音量/29.png'))
app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())
运行结果:
![](https://img.haomeiwen.com/i22578190/5c3d73d56fbfa493.png)
![](https://img.haomeiwen.com/i22578190/fd74b4270c6cb78b.png)
![](https://img.haomeiwen.com/i22578190/fd25b8a909651492.png)
![](https://img.haomeiwen.com/i22578190/e85804cd462a67d5.png)
网友评论