mirror of
https://github.com/pyapp-kit/superqt.git
synced 2025-09-05 17:20:27 +02:00
117 lines
3.6 KiB
Python
117 lines
3.6 KiB
Python
from qtrangeslider import QRangeSlider
|
|
from qtrangeslider.qtcompat import QtCore
|
|
from qtrangeslider.qtcompat import QtWidgets as QtW
|
|
|
|
QSS = """
|
|
|
|
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:horizontal {
|
|
background: #AF5A50;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
"""
|
|
|
|
|
|
class DemoWidget(QtW.QWidget):
|
|
def __init__(self) -> None:
|
|
super().__init__()
|
|
|
|
reg_hslider = QtW.QSlider(QtCore.Qt.Horizontal)
|
|
reg_hslider.setValue(50)
|
|
range_hslider = QRangeSlider(QtCore.Qt.Horizontal)
|
|
range_hslider.setValue((20, 80))
|
|
multi_range_hslider = QRangeSlider(QtCore.Qt.Horizontal)
|
|
multi_range_hslider.setValue((11, 33, 66, 88))
|
|
multi_range_hslider.setTickPosition(QtW.QSlider.TicksAbove)
|
|
|
|
styled_reg_hslider = QtW.QSlider(QtCore.Qt.Horizontal)
|
|
styled_reg_hslider.setValue(50)
|
|
styled_reg_hslider.setStyleSheet(QSS)
|
|
styled_range_hslider = QRangeSlider(QtCore.Qt.Horizontal)
|
|
styled_range_hslider.setValue((20, 80))
|
|
styled_range_hslider.setStyleSheet(QSS)
|
|
|
|
reg_vslider = QtW.QSlider(QtCore.Qt.Vertical)
|
|
reg_vslider.setValue(50)
|
|
range_vslider = QRangeSlider(QtCore.Qt.Vertical)
|
|
range_vslider.setValue((22, 77))
|
|
|
|
tick_vslider = QtW.QSlider(QtCore.Qt.Vertical)
|
|
tick_vslider.setValue(55)
|
|
tick_vslider.setTickPosition(QtW.QSlider.TicksRight)
|
|
range_tick_vslider = QRangeSlider(QtCore.Qt.Vertical)
|
|
range_tick_vslider.setValue((22, 77))
|
|
range_tick_vslider.setTickPosition(QtW.QSlider.TicksLeft)
|
|
|
|
szp = QtW.QSizePolicy.Maximum
|
|
left = QtW.QWidget()
|
|
left.setLayout(QtW.QVBoxLayout())
|
|
left.setContentsMargins(2, 2, 2, 2)
|
|
label1 = QtW.QLabel("Regular QSlider Unstyled")
|
|
label2 = QtW.QLabel("QRangeSliders Unstyled")
|
|
label3 = QtW.QLabel("Styled Sliders (using same stylesheet)")
|
|
label1.setSizePolicy(szp, szp)
|
|
label2.setSizePolicy(szp, szp)
|
|
label3.setSizePolicy(szp, szp)
|
|
left.layout().addWidget(label1)
|
|
left.layout().addWidget(reg_hslider)
|
|
left.layout().addWidget(label2)
|
|
left.layout().addWidget(range_hslider)
|
|
left.layout().addWidget(multi_range_hslider)
|
|
left.layout().addWidget(label3)
|
|
left.layout().addWidget(styled_reg_hslider)
|
|
left.layout().addWidget(styled_range_hslider)
|
|
|
|
right = QtW.QWidget()
|
|
right.setLayout(QtW.QHBoxLayout())
|
|
right.setContentsMargins(15, 5, 5, 0)
|
|
right.layout().setSpacing(30)
|
|
right.layout().addWidget(reg_vslider)
|
|
right.layout().addWidget(range_vslider)
|
|
right.layout().addWidget(tick_vslider)
|
|
right.layout().addWidget(range_tick_vslider)
|
|
|
|
self.setLayout(QtW.QHBoxLayout())
|
|
self.layout().addWidget(left)
|
|
self.layout().addWidget(right)
|
|
self.setGeometry(600, 300, 580, 300)
|
|
self.activateWindow()
|
|
QtW.QApplication.processEvents()
|
|
self.show()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
dest = Path("screenshots")
|
|
dest.mkdir(exist_ok=True)
|
|
|
|
app = QtW.QApplication([])
|
|
demo = DemoWidget()
|
|
|
|
if "-x" in sys.argv:
|
|
app.exec_()
|
|
else:
|
|
demo.grab().save(str(dest / "demo_widget.png"))
|