跳转到主要内容

适用于PyQt/PySide的多手柄范围滑块小部件

项目描述

Qt范围滑块

License PyPI Python Version Test codecov

PyQt & PySide缺失的多手柄范围滑块小部件

slider

此软件包的目标是提供一个尽可能“原生”的滑动条(带有2个或更多手柄)。默认情况下,样式应与操作系统匹配,滑动条应像标准 QSlider... 但具有多个手柄!

  • QRangeSlider 继承自 QSlider 并尽可能匹配Qt API
  • 使用平台特定样式(用于手柄、凹槽和刻度线),但也支持QSS样式表。
  • 支持鼠标滚轮和按键事件(即将推出)
  • 支持PyQt5、PyQt6、PySide2和PySide6
  • 支持超过2个手柄(例如 slider.setValue([0, 10, 60, 80])

安装

您可以通过pip安装 Qt范围滑块

pip install qtrangeslider

# NOTE: you must also install a Qt Backend.
# PyQt5, PySide2, PyQt6, and PySide6 are supported
# As a convenience you can install them as extras:
pip install qtrangeslider[pyqt5]

API

创建滑动条

from qtrangeslider import QRangeSlider

# as usual:
# you must create a QApplication before create a widget.
range_slider = QRangeSlider()

由于QRangeSlider继承自QtWidgets.QSlider,你可以使用在QSlider API中可用的所有方法。主要区别在于,valuesliderPosition被重写为int元组(元组的长度等于滑块中句柄的数量。)

value: Tuple[int, ...]

此属性保存滑块中所有句柄的当前值。

滑块强制所有值都在合法范围内:minimum <= value <= maximum

更改值也会更改sliderPosition。

访问函数
range_slider.value() -> Tuple[int, ...]
range_slider.setValue(val: Sequence[int]) -> None
通知信号
valueChanged(Tuple[int, ...])

sliderPosition: Tuple[int, ...]

此属性保存当前滑块位置。它是一个长度等于句柄数量的元组

如果tracking被启用(默认值),则此值与value相同。

访问函数
range_slider.sliderPosition() -> Tuple[int, ...]
range_slider.setSliderPosition(val: Sequence[int]) -> None
通知信号
sliderMoved(Tuple[int, ...])

其他属性

这些选项是Qt QSlider API的补充,并控制句柄之间条形的行為。

getter setter 类型 默认值 描述
barIsVisible setBarIsVisible
hideBar / showBar
bool True 句柄之间的条形是否可见。
barMovesAllHandles setBarMovesAllHandles bool True 是否点击条形移动所有句柄或仅移动最近的句柄
barIsRigid setBarIsRigid bool True 条形长度在拖动条形超过最小/最大值时是否保持恒定或“弹性”

示例

以下截图显示了QRangeSlider(多个句柄)与原生的QSlider(单个句柄)并排。如果没有应用样式,QRangeSlider将与原生OS的QSlider样式匹配——有无刻度。如果使用Qt Style Sheets应用了样式,则QRangeSlider将继承应用到QSlider上的任何样式(因为它继承自QSlider)。如果您想将QRangeSliderQSlider区分开来,您也可以直接在样式表中针对它。QRangeSlider的一个“特殊”属性是qproperty-barColor,它设置句柄之间条形的颜色。

这些示例小部件的代码在此处

查看此示例使用的样式表
/*
Because QRangeSlider inherits from QSlider, it will also inherit styles
*/
QSlider {
    min-height: 20px;
}

QSlider::groove:horizontal {
    border: 0px;
    background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
                                stop:0 #777, stop:1 #aaa);
    height: 20px;
    border-radius: 10px;
}

QSlider::handle {
    background: qradialgradient(cx:0, cy:0, radius: 1.2, fx:0.5,
                                fy:0.5, stop:0 #eef, stop:1 #000);
    height: 20px;
    width: 20px;
    border-radius: 10px;
}

/*
"QSlider::sub-page" is the one exception ...
(it styles the area to the left of the QSlider handle)
*/
QSlider::sub-page:horizontal {
    background: #447;
    border-top-left-radius: 10px;
    border-bottom-left-radius: 10px;
}

/*
for QRangeSlider: use "qproperty-barColor".  "sub-page" will not work.
*/
QRangeSlider {
    qproperty-barColor: #447;
}

macOS

Catalina

mac10

Big Sur

mac11

Windows

window

Linux

linux

标签滑块

此包还包括两种“标签”滑块变体。一个是QRangeSlider的,另一个是原生的QSlider

QLabeledRangeSlider

labeled_range

from qtrangeslider import QLabeledRangeSlider

此控件具有与QRangeSlider相同的API,并具有以下附加选项

handleLabelPosition/setHandleLabelPosition

标签显示在滑块句柄旁边的位置/是否显示。

类型: QLabeledRangeSlider.LabelPosition

默认: LabelPosition.LabelsAbove

选项

  • LabelPosition.NoLabel(不显示与句柄相邻的标签)
  • LabelPosition.LabelsAbove
  • LabelPosition.LabelsBelow
  • LabelPosition.LabelsRightLabelPosition.LabelsAbove的别名)
  • LabelPosition.LabelsLeftLabelPosition.LabelsBelow的别名)

edgeLabelMode/setEdgeLabelMode

类型: QLabeledRangeSlider.EdgeLabelMode

默认: EdgeLabelMode.LabelIsRange

选项

  • EdgeLabelMode.NoLabel:在滑块两端不显示标签
  • EdgeLabelMode.LabelIsRange:边缘标签显示最小/最大值
  • EdgeLabelMode.LabelIsValue:边缘标签显示滑块范围

调整标签位置

如果您发现需要微调句柄标签的位置

  • QLabeledRangeSlider.label_shift_x:调整水平标签位置
  • QLabeledRangeSlider.label_shift_y:调整垂直标签位置

QLabeledSlider

labeled_range

from qtrangeslider import QLabeledSlider

(目前没有其他附加选项)

问题

如果在使用过程中遇到任何问题,请附带详细描述提交问题报告

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码分发

QtRangeSlider-0.1.5.tar.gz (238.4 kB 查看哈希值)

上传时间 源代码

构建分发

QtRangeSlider-0.1.5-py3-none-any.whl (33.2 kB 查看哈希值)

上传时间 Python 3

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面