滑塊部件由一個簡單的操控桿構成,用戶可以通過向前或向后滑動滑塊來選擇數據。這種選擇數據的方式對一些特殊的任務來說比單純的提供一個數據或使用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()
用來獲取當前滑塊的位置。