mirror of
https://github.com/pyapp-kit/superqt.git
synced 2026-01-04 19:31:24 +01:00
rename
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -77,4 +77,3 @@ target/
|
|||||||
|
|
||||||
# written by setuptools_scm
|
# written by setuptools_scm
|
||||||
*/_version.py
|
*/_version.py
|
||||||
screenshots/
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -12,7 +12,7 @@ modification, are permitted provided that the following conditions are met:
|
|||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
* Neither the name of pyqrangeslider nor the names of its
|
* Neither the name of QtRangeSlider nor the names of its
|
||||||
contributors may be used to endorse or promote products derived from
|
contributors may be used to endorse or promote products derived from
|
||||||
this software without specific prior written permission.
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
|||||||
118
README.md
118
README.md
@@ -1,34 +1,116 @@
|
|||||||
# PyQRangeSlider
|
# QtRangeSlider
|
||||||
|
|
||||||
[](https://github.com/tlambert03/PyQRangeSlider/raw/master/LICENSE)
|
[](https://github.com/tlambert03/QtRangeSlider/raw/master/LICENSE)
|
||||||
[](https://pypi.org/project/PyQRangeSlider)
|
[](https://pypi.org/project/QtRangeSlider)
|
||||||
[](https://python.org)
|
[](https://github.com/tlambert03/PyQRangeSlider/actions/workflows/test_and_deploy.yml)
|
Version](https://img.shields.io/pypi/pyversions/QtRangeSlider.svg?color=green)](https://python.org)
|
||||||
[](https://codecov.io/gh/tlambert03/PyQRangeSlider)
|
[](https://github.com/tlambert03/QtRangeSlider/actions/workflows/test_and_deploy.yml)
|
||||||
|
[](https://codecov.io/gh/tlambert03/QtRangeSlider)
|
||||||
|
|
||||||
Multi-handle range slider widget for PyQt/PySide
|
**Multi-handle range slider widget for PyQt/PySide**
|
||||||
|
|
||||||
The goal of this package is to provide a QRangeSlider that feels as "native"
|

|
||||||
as possible. Styles should match the OS by default, and the slider should
|
|
||||||
behave like a standard QSlider... just with multiple handles.
|
|
||||||
|
|
||||||
- Supports more than 2 handles (e.g. `slider.setValue([0, 10, 60, 80])`)
|
The goal of this package is to provide a Range Slider (a slider with 2 or more
|
||||||
- Attempts to match QSlider API as closely as possible
|
handles) that feels as "native" as possible. Styles should match the OS by
|
||||||
- Uses platform-specific styles (for handle, groove, & ticks) but also supports QSS style sheets.
|
default, and the slider should behave like a standard
|
||||||
|
[`QSlider`](https://doc.qt.io/qt-5/qslider.html)... but with multiple handles!
|
||||||
|
|
||||||
|
- `QRangeSlider` inherits from [`QSlider`](https://doc.qt.io/qt-5/qslider.html)
|
||||||
|
and attempts to match the Qt API as closely as possible
|
||||||
|
- Uses platform-specific styles (for handle, groove, & ticks) but also supports
|
||||||
|
QSS style sheets.
|
||||||
- Supports mouse wheel and keypress (soon) events
|
- Supports mouse wheel and keypress (soon) events
|
||||||
- Supports PyQt5, PyQt6, PySide2 and PySide6
|
- Supports PyQt5, PyQt6, PySide2 and PySide6
|
||||||
|
- Supports more than 2 handles (e.g. `slider.setValue([0, 10, 60, 80])`)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
You can install `PyQRangeSlider` via pip:
|
You can install `QtRangeSlider` via pip:
|
||||||
|
|
||||||
pip install pyqrangeslider
|
```sh
|
||||||
|
pip install qtrangeslider
|
||||||
|
|
||||||
|
# note: you must also install a Qt Backend
|
||||||
|
# supports PyQt5, PySide2, PyQt6, and PySide6
|
||||||
|
# as a convenience you can install via extras:
|
||||||
|
pip install qtrangeslider[pyqt5]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
And then to use it:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from qtrangeslider import QRangeSlider
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
As `QRangeSlider` inherits from `QtWidgets.QSlider`, you can use all of the
|
||||||
|
same methods available in the [QSlider API](https://doc.qt.io/qt-5/qslider.html)
|
||||||
|
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
These screenshots show `QRangeSlider` (multiple handles) next to the native `QSlider`
|
||||||
|
(single handle). With no styles applied, `QRangeSlider` will match the native OS
|
||||||
|
style of `QSlider` – with or without tick marks. When styles have been applied
|
||||||
|
using [Qt Style Sheets](https://doc.qt.io/qt-5/stylesheet-reference.html), then
|
||||||
|
`QRangeSlider` will inherit any styles applied to `QSlider` (since it inherits
|
||||||
|
from QSlider).
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><em>See style sheet used for this example</em></summary>
|
||||||
|
|
||||||
|
```css
|
||||||
|
/* Because QRangeSlider inherits QSlider, it will also inherit styles */
|
||||||
|
QSlider::groove:horizontal {
|
||||||
|
border: 0px;
|
||||||
|
background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #FDE282, stop:1 #EB9A5D);
|
||||||
|
height: 16px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSlider::handle:horizontal {
|
||||||
|
background: #271848;
|
||||||
|
border: 1px solid #583856;
|
||||||
|
width: 18px;
|
||||||
|
margin: -2px 0;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSlider::handle:hover {
|
||||||
|
background-color: #2F4F4F;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* "QSlider::sub-page" will style the "bar" area between the QRangeSlider handles */
|
||||||
|
QSlider::sub-page:horizontal {
|
||||||
|
background: #AF5A50;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Window
|
||||||
|
|
||||||
|
(coming)
|
||||||
|
<!--  -->
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
(coming)
|
||||||
|
<!--  -->
|
||||||
|
|
||||||
## Issues
|
## Issues
|
||||||
|
|
||||||
If you encounter any problems, please [file an issue] along with a detailed description.
|
If you encounter any problems, please [file an issue] along with a detailed
|
||||||
|
description.
|
||||||
|
|
||||||
|
|
||||||
[file an issue]: https://github.com/tlambert03/PyQRangeSlider/issues
|
[file an issue]: https://github.com/tlambert03/QtRangeSlider/issues
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from pyqrangeslider import QRangeSlider
|
from qtrangeslider import QRangeSlider
|
||||||
from pyqrangeslider.qtcompat.QtWidgets import QApplication
|
from qtrangeslider.qtcompat.QtWidgets import QApplication
|
||||||
|
|
||||||
app = QApplication([])
|
app = QApplication([])
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from pyqrangeslider import QRangeSlider
|
from qtrangeslider import QRangeSlider
|
||||||
from pyqrangeslider.qtcompat.QtWidgets import QApplication
|
from qtrangeslider.qtcompat.QtWidgets import QApplication
|
||||||
|
|
||||||
app = QApplication([])
|
app = QApplication([])
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from pyqrangeslider import QRangeSlider
|
from qtrangeslider import QRangeSlider
|
||||||
from pyqrangeslider.qtcompat import QtCore
|
from qtrangeslider.qtcompat import QtCore
|
||||||
from pyqrangeslider.qtcompat import QtWidgets as QtW
|
from qtrangeslider.qtcompat import QtWidgets as QtW
|
||||||
|
|
||||||
QSS = """
|
QSS = """
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ class DemoWidget(QtW.QWidget):
|
|||||||
szp = QtW.QSizePolicy.Maximum
|
szp = QtW.QSizePolicy.Maximum
|
||||||
left = QtW.QWidget()
|
left = QtW.QWidget()
|
||||||
left.setLayout(QtW.QVBoxLayout())
|
left.setLayout(QtW.QVBoxLayout())
|
||||||
left.setContentsMargins(0, 0, 0, 0)
|
left.setContentsMargins(2, 2, 2, 2)
|
||||||
label1 = QtW.QLabel("Regular QSlider Unstyled")
|
label1 = QtW.QLabel("Regular QSlider Unstyled")
|
||||||
label2 = QtW.QLabel("QRangeSliders Unstyled")
|
label2 = QtW.QLabel("QRangeSliders Unstyled")
|
||||||
label3 = QtW.QLabel("Styled Sliders (using same stylesheet)")
|
label3 = QtW.QLabel("Styled Sliders (using same stylesheet)")
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from pyqrangeslider import QRangeSlider
|
from qtrangeslider import QRangeSlider
|
||||||
from pyqrangeslider.qtcompat.QtCore import Qt
|
from qtrangeslider.qtcompat.QtCore import Qt
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("orientation", ["Horizontal", "Vertical"])
|
@pytest.mark.parametrize("orientation", ["Horizontal", "Vertical"])
|
||||||
BIN
screenshots/demo_macos.png
Normal file
BIN
screenshots/demo_macos.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
BIN
screenshots/slider.png
Normal file
BIN
screenshots/slider.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 86 KiB |
10
setup.cfg
10
setup.cfg
@@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = PyQRangeSlider
|
name = QtRangeSlider
|
||||||
url = https://github.com/tlambert03/PyQRangeSlider
|
url = https://github.com/tlambert03/QtRangeSlider
|
||||||
license = BSD-3
|
license = BSD-3
|
||||||
license_file = LICENSE
|
license_file = LICENSE
|
||||||
description = Multi-handle range slider widget for PyQt/PySide
|
description = Multi-handle range slider widget for PyQt/PySide
|
||||||
@@ -10,9 +10,9 @@ author = Talley Lambert
|
|||||||
author_email = talley.lambert@gmail.com
|
author_email = talley.lambert@gmail.com
|
||||||
keywords = qt, range slider, widget
|
keywords = qt, range slider, widget
|
||||||
project_urls =
|
project_urls =
|
||||||
Source = https://github.com/tlambert03/PyQRangeSlider
|
Source = https://github.com/tlambert03/QtRangeSlider
|
||||||
Tracker = https://github.com/tlambert03/PyQRangeSlider/issues
|
Tracker = https://github.com/tlambert03/QtRangeSlider/issues
|
||||||
Changelog = https://github.com/tlambert03/PyQRangeSlider/blob/master/CHANGELOG.md
|
Changelog = https://github.com/tlambert03/QtRangeSlider/blob/master/CHANGELOG.md
|
||||||
classifiers =
|
classifiers =
|
||||||
Development Status :: 4 - Beta
|
Development Status :: 4 - Beta
|
||||||
Environment :: X11 Applications :: Qt
|
Environment :: X11 Applications :: Qt
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -5,6 +5,6 @@ so this file is currently here to support "pip install -e ."
|
|||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
use_scm_version={"write_to": "pyqrangeslider/_version.py"},
|
use_scm_version={"write_to": "qtrangeslider/_version.py"},
|
||||||
setup_requires=["setuptools_scm"],
|
setup_requires=["setuptools_scm"],
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user