QSlider
import sys from PyQt4 import QtGui, QtCore class Example(QtGui.QWidget): def __init__(self): super(Example, self).__init__() # mainlayout hbox = QtGui.QVBoxLayout(self) # background self.bgColor = QtGui.QColor(0, 0, 0) self.bg = QtGui.QFrame(self) self.bg.setGeometry(0, 0, 300, 300) # クライアント座標 self.bg.setStyleSheet("background-color:%s" % self.bgColor.name()) # palette pallet = QtGui.QPalette(self) pallet.setColor( QtGui.QPalette.Foreground, QtCore.Qt.white ) # top components lbl1 = QtGui.QLabel("TicksBothSides : Red", self) lbl1.setPalette(pallet) sld1 = QtGui.QSlider(QtCore.Qt.Horizontal, self) sld1.setObjectName("red") # オブジェクト名をつける sld1.setFocusPolicy(QtCore.Qt.NoFocus) # フォーカスを移さない sld1.setRange(0, 255) sld1.setTickInterval(10) # 目盛の間隔 sld1.setTickPosition(QtGui.QSlider.TicksBothSides) # 目盛の位置 sld1.valueChanged.connect(self.changeValue) # middle components lbl2 = QtGui.QLabel("TicksAbove(TicksLeft) : Green", self) lbl2.setPalette(pallet) sld2 = QtGui.QSlider(QtCore.Qt.Horizontal, self) sld2.setObjectName("green") sld2.setFocusPolicy(QtCore.Qt.NoFocus) sld2.setRange(0, 255) sld2.setTickInterval(15) sld2.setTickPosition(QtGui.QSlider.TicksAbove) sld2.valueChanged.connect(self.changeValue) # bottom components lbl3 = QtGui.QLabel("TicksAbove(TicksLeft) : Blue", self) lbl3.setPalette(pallet) sld3 = QtGui.QSlider(QtCore.Qt.Horizontal, self) sld3.setObjectName("blue") sld3.setFocusPolicy(QtCore.Qt.NoFocus) sld3.setRange(0, 255) sld3.setTickInterval(50) sld3.setTickPosition(QtGui.QSlider.TicksBelow) sld3.valueChanged.connect(self.changeValue) # add widget hbox.addStretch() # 間隔を調整 hbox.addWidget(lbl1) hbox.addWidget(sld1) hbox.addStretch() hbox.addWidget(lbl2) hbox.addWidget(sld2) hbox.addStretch() hbox.addWidget(lbl3) hbox.addWidget(sld3) hbox.addStretch() self.setLayout(hbox) self.setGeometry(300, 300, 300, 300) self.setWindowTitle('QSlider') self.show() def changeValue(self, value): objectColor = self.sender().objectName() # 関数ポインタハッシュの作成 funcMap = { "red":self.bgColor.setRed, "green":self.bgColor.setGreen, "blue":self.bgColor.setBlue } funcMap[str(objectColor)](value) # QStringから文字列方へキャスト self.bg.setStyleSheet("background-color: %s" % self.bgColor.name()) def main(): app = QtGui.QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()
ラベルに色をつけるにはQPaletteを使用するらしいです。