适用于PyQt/PySide的多手柄范围滑块小部件
项目描述
Qt范围滑块
PyQt & PySide缺失的多手柄范围滑块小部件
此软件包的目标是提供一个尽可能“原生”的滑动条(带有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中可用的所有方法。主要区别在于,value
和sliderPosition
被重写为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)。如果您想将QRangeSlider
与QSlider
区分开来,您也可以直接在样式表中针对它。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
Big Sur
Windows
Linux
标签滑块
此包还包括两种“标签”滑块变体。一个是QRangeSlider
的,另一个是原生的QSlider
QLabeledRangeSlider
from qtrangeslider import QLabeledRangeSlider
此控件具有与QRangeSlider
相同的API,并具有以下附加选项
handleLabelPosition
/setHandleLabelPosition
标签显示在滑块句柄旁边的位置/是否显示。
类型: QLabeledRangeSlider.LabelPosition
默认: LabelPosition.LabelsAbove
选项
LabelPosition.NoLabel
(不显示与句柄相邻的标签)LabelPosition.LabelsAbove
LabelPosition.LabelsBelow
LabelPosition.LabelsRight
(LabelPosition.LabelsAbove
的别名)LabelPosition.LabelsLeft
(LabelPosition.LabelsBelow
的别名)
edgeLabelMode
/setEdgeLabelMode
类型: QLabeledRangeSlider.EdgeLabelMode
默认: EdgeLabelMode.LabelIsRange
选项
EdgeLabelMode.NoLabel
:在滑块两端不显示标签EdgeLabelMode.LabelIsRange
:边缘标签显示最小/最大值EdgeLabelMode.LabelIsValue
:边缘标签显示滑块范围
调整标签位置
如果您发现需要微调句柄标签的位置
QLabeledRangeSlider.label_shift_x
:调整水平标签位置QLabeledRangeSlider.label_shift_y
:调整垂直标签位置
QLabeledSlider
from qtrangeslider import QLabeledSlider
(目前没有其他附加选项)
问题
如果在使用过程中遇到任何问题,请附带详细描述提交问题报告。
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
QtRangeSlider-0.1.5.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5375df8c31eec80bb4d4c2ac76a842973832560cc0a522c8c5715b8c5f68e213 |
|
MD5 | 344fb2537f3e2a267dcadd243f924ec0 |
|
BLAKE2b-256 | f43a2c0ff8c9ca3773e198f4e5921ba81a095ff0910fd8079c19a8bbc0a96080 |
QtRangeSlider-0.1.5-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b716a0b4adffbe9015d3bff44f15312214f2ad411830dba78bc48869c31ba557 |
|
MD5 | c47c920735d54bb5a715116d5b509abe |
|
BLAKE2b-256 | 5e7dde073b46b8f1f6f971f71e3ab6062df30613c838e6c12c72acfec4ad3fe2 |