PyQt - QSlider 控件 & 信号



QSlider 类对象为用户提供了一个槽,用户可以在其上移动一个滑块。它是一个经典的控制有界值的控件。滑块在槽中的位置等效于控制的下限和上限之间的整数。

可以通过在构造函数中指定方向,以水平或垂直方式显示滑块控件。

self.sp = QSlider(Qt.Horizontal)
self.sp = QSlider(Qt.Vertical)

下表列出了 QSlider 类的一些常用方法:

以下是 QSlider 最常用的方法。

序号 方法 & 描述
1

setMinimum()

设置滑块的下限

2

setMaximum()

设置滑块的上限

3

setSingleStep()

设置增量/减量步长

4

setValue()

以编程方式设置控件的值

5

value()

返回当前值

6

setTickInterval()

在槽上设置刻度的数量

7

setTickPosition()

在槽上放置刻度。值如下:

QSlider.NoTicks 无刻度
QSlider.TicksBothSides 两侧都有刻度
QSlider.TicksAbove 滑块上方的刻度
QSlider.TicksBelow 滑块下方的刻度
QSlider.TicksLeft 滑块左侧的刻度
QSlider.TicksRight 滑块右侧的刻度

QSlider 信号

序号 方法 & 描述
1

valueChanged()

当滑块的值发生变化时

2

sliderPressed()

当用户开始拖动滑块时

3

sliderMoved()

当用户拖动滑块时

4

sliderReleased()

当用户释放滑块时

valueChanged() 信号是最常使用的信号。

示例

以下示例演示了上述功能。一个标签和一个水平滑块放置在垂直布局中。滑块的 valueChanged() 信号连接到 valuechange() 方法。

self.sl.valueChanged.connect(self.valuechange)

槽函数 valuechange() 读取滑块的当前值,并将其用作标签标题的字体大小。

size = self.sl.value()
self.l1.setFont(QFont("Arial",size))

完整的代码如下:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class sliderdemo(QWidget):
   def __init__(self, parent = None):
      super(sliderdemo, self).__init__(parent)

      layout = QVBoxLayout()
      self.l1 = QLabel("Hello")
      self.l1.setAlignment(Qt.AlignCenter)
      layout.addWidget(self.l1)
		
      self.sl = QSlider(Qt.Horizontal)
      self.sl.setMinimum(10)
      self.sl.setMaximum(30)
      self.sl.setValue(20)
      self.sl.setTickPosition(QSlider.TicksBelow)
      self.sl.setTickInterval(5)
		
      layout.addWidget(self.sl)
      self.sl.valueChanged.connect(self.valuechange)
      self.setLayout(layout)
      self.setWindowTitle("SpinBox demo")

   def valuechange(self):
      size = self.sl.value()
      self.l1.setFont(QFont("Arial",size))
		
def main():
   app = QApplication(sys.argv)
   ex = sliderdemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

以上代码产生以下输出:

Widget and Signal Output

当滑块的滑块在滑块上移动时,标签的字体大小会发生变化。

广告