滑块控件QSlider
QSlider小部件提供垂直或水平滑块。
from PySide6.QtWidgets import QSlider
QSlider(orientation: PySide6.QtCore.Qt.Orientation, parent: Union[PySide6.QtWidgets.QWidget, NoneType] = None)
QSlider(parent: Union[PySide6.QtWidgets.QWidget, NoneType] = None)
用给定的父级构造垂直滑块。
用给定的父级构造一个滑块。方向参数确定滑块是水平还是垂直; 有效值是垂直和水平。
滑块控件QSlider官方描述
滑块是用于控制有界值的经典小部件。它允许用户沿着水平或垂直凹槽移动滑动手柄,并将手柄的位置转换为合法范围内的整数值。
QSlider本身的功能很少;大部分功能都在QAbstractSlider中。最有用的函数是setValue,用于将滑块直接设置为某个值;triggerAction模拟点击的效果对快捷键很有用;setSingleStep,setPageStep设置步骤;以及setMinimum和setMaximum来定义滚动条的范围。
QSlider提供了控制tickmarks的方法。您可以使用setTickPosition来指示您想要的tickmarks所在的位置,使用setTick Interval来表示您想要的数量。可以分别使用tickPosition和tickInterval函数查询当前设置的刻度位置和间隔。
QSlider继承了一套全面的信号:
Signal | Description |
---|---|
valueChanged() | 当滑块的值发生更改时发出。tracking确定该信号是否在用户交互过程中发出。 |
sliderPressed() | 当用户开始拖动滑块时发出。 |
sliderMoved() | 当用户拖动滑块时发出。 |
sliderReleased() | 当用户释放滑块时发出。 |
QSlider只提供整数范围。请注意,尽管QSlider可以处理非常大的数字,但用户很难在非常大的范围内准确使用滑块。
滑块接受Tab上的焦点,并提供鼠标滚轮和键盘界面。键盘界面如下:
- 向左/向右移动水平滑块一步。
- 向上/向下移动垂直滑块一步。
- PageUp向上移动一页。
- PageDown向下移动一页。
- 原点移动到起点最小值。
- 末端移动到末端最大值。
滑块控件QSlider属性
属性 | 描述 | 功能访问 |
---|---|---|
tickInterval: int | 此属性保存记号之间的间隔。 这是一个值间隔,而不是像素间隔。如果为0,则滑块将在singleStep和pageStep之间进行选择。 默认值为0。 | tickInterval () setTickInterval (ti) |
tickPosition: TickPosition | 此属性保存此滑块的tickmark位置。 有效值由TickPosition enum描述。 默认值为NoTicks。 | tickPosition () setTickPosition (position) |
滑块控件QSlider方法
-
PySide6.QtWidgets.QSlider.TickPosition
此枚举指定相对于滑块的凹槽和用户移动的手柄要绘制的刻度线。
Constant Description QSlider.NoTicks 不要画任何刻度线。 QSlider.TicksBothSides 在凹槽的两侧绘制刻度线。 QSlider.TicksAbove 在 (水平) 滑块上方绘制刻度线 QSlider.TicksBelow 在 (水平) 滑块下方绘制刻度线 QSlider.TicksLeft 在 (垂直) 滑块的左侧绘制刻度线 QSlider.TicksRight 在 (垂直) 滑块的右侧绘制刻度线
方法 | 描述 |
---|---|
initStyleOption(self, option: PySide6.QtWidgets.QStyleOptionSlider) | 使用此QSlider中的值初始化选项。当子类需要QStyleOptionSlider,但不想自己填写所有信息时,此方法对子类很有用。 |
setTickInterval(self, ti: int) | 属性tickInterval的设置器。 |
setTickPosition(self, position: PySide6.QtWidgets.QSlider.TickPosition) | 属性tickPosition设置 |
tickInterval(self) -> int | 获取属性tickInterval |
tickPosition(self) -> PySide6.QtWidgets.QSlider.TickPosition | 获取属性tickPosition |
QSlider 例子
# -*- coding: UTF-8 -*-
# File date: Hi_2023/3/15 0:57
# File_name: 05-QSlider 例子.py
import sys
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
class SliderDemo(QWidget):
def __init__(self,parent=None):
super(SliderDemo,self).__init__(parent)
self.setWindowTitle("QSlider 例子")
self.resize(300,100)
layout = QVBoxLayout()
self.label = QLabel("Hello Qt for Python")
self.label.setAlignment(Qt.AlignCenter)
layout.addWidget(self.label)
# 水平滑块
self.slider_horizon = QSlider(Qt.Horizontal)
self.slider_horizon.setMinimum(10)
self.slider_horizon.setMaximum(50)
self.slider_horizon.setSingleStep(3)
self.slider_horizon.setPageStep(10)
self.slider_horizon.setValue(20)
self.slider_horizon.setTickPosition(QSlider.TicksBelow)
self.slider_horizon.setTickInterval(5)
layout.addWidget(self.slider_horizon)
# 垂直滑块
self.slider_vertical = QSlider(Qt.Vertical)
self.slider_vertical.setMinimum(5)
self.slider_vertical.setMaximum(25)
self.slider_vertical.setSingleStep(1)
self.slider_vertical.setPageStep(5)
self.slider_vertical.setValue(15)
self.slider_vertical.setTickPosition(QSlider.TicksRight)
self.slider_vertical.setTickInterval(5)
self.slider_vertical.setMinimumHeight(100)
layout.addWidget(self.slider_vertical)
# 连接信号槽
self.slider_horizon.valueChanged.connect(lambda: self.valuechange(self.slider_horizon))
self.slider_vertical.valueChanged.connect(lambda: self.valuechange(self.slider_vertical))
self.setLayout(layout)
def valuechange(self,slider):
size = slider.value()
self.label.setText('选中大小:%d'% size)
self.label.setFont(QFont("Arial",size))
if __name__ =='__main__':
app = QApplication(sys.argv)
demo = SliderDemo()
demo.show()
sys.exit(app.exec())