滑块部件由一个简单的操控杆构成,用户可以通过向前或向后滑动滑块来选择数据。这种选择数据的方式对一些特殊的任务来说比单纯的提供一个数据或使用spin box调整数据大小的方式要自然友好的多。而标签部件则用来显示文本或图片。
在以下的示例中,我们将在窗口中显示一个滑块和一个标签。这次我们将在标签部件中显示图片,并使用滑块来控制其显示内容。
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class SliderLabel(QtGui.QWidget): def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Slider Label') self.slider = QtGui.QSlider(QtCore.Qt.Horizontal, self) self.slider.setFocusPolicy(QtCore.Qt.NoFocus) self.slider.setGeometry(30, 40, 100, 30) self.connect(self.slider, QtCore.SIGNAL('valueChanged(int)'), self.changeValue) self.label = QtGui.QLabel(self) self.label.setPixmap(QtGui.QPixmap('mute.png')) self.label.setGeometry(160, 25, 64, 64) def changeValue(self): pos = self.slider.value() if pos == 0: self.label.setPixmap(QtGui.QPixmap('mute.png')) elif pos <= 30: self.label.setPixmap(QtGui.QPixmap('min.png')) elif pos < 80: self.label.setPixmap(QtGui.QPixmap('med.png')) else: self.label.setPixmap(QtGui.QPixmap('max.png')) app = QtGui.QApplication(sys.argv) sl = SliderLabel() sl.show() sys.exit(app.exec_())
效果:
注意:QLabel的像素的大小要与图片的大小相适应,这里我用的图标的大小就是64x64的。
在这个示例中我们模拟一个音量控制的场景,通过拖动滑块来改变变迁部件中的图片显示。
self.slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
通过该语句我们创建了一个水平华东部件。
self.label = QtGui.QLabel(self)
self.label.setPixmap(QtGui.QPixmap('mute.png'))
以上两行用来创建一个标签部件并将mute.png加入到该部件中显示。
self.connect(self.slider, QtCore.SIGNAL('valueChanged(int)'),
self.changeValue)
该行语句将滑块的valueChanged()信号与自定义的changeValue()方法向连接。
pos = self.slider.value()
用来获取当前滑块的位置。