better color parsing

This commit is contained in:
Talley Lambert
2021-04-24 19:57:03 -04:00
parent 6eac33f6ec
commit 600a96bd55
2 changed files with 182 additions and 44 deletions

View File

@@ -1,35 +1,110 @@
import pathlib
from itertools import product
from pyqrangeslider import QRangeSlider
from pyqrangeslider.qtcompat.QtCore import Qt
from pyqrangeslider.qtcompat.QtWidgets import QApplication
from pyqrangeslider.qtcompat import QtCore
from pyqrangeslider.qtcompat import QtWidgets as QtW
dest = pathlib.Path("screenshots")
dest.mkdir(exist_ok=True)
QSS = """
app = QApplication([])
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;
}
orientations = ("horizontal", "vertical")
ticks = ("NoTicks", "TicksAbove", "TicksBelow")
QSlider::handle:horizontal {
background: #271848;
border: 1px solid #583856;
width: 18px;
margin: -2px 0;
border-radius: 3px;
}
variants = [
# (min, max), orient, ticks,
((20, 80), "horizontal"),
((20, 80), "vertical"),
]
QSlider::handle:hover {
background-color: #2F4F4F;
}
for orient, tick in product(orientations, ticks):
slider = QRangeSlider(getattr(Qt, orient.title()))
slider.setRange(0, 100)
slider.setValue((20, 80))
slider.setTickPosition(getattr(slider, tick))
slider.activateWindow()
if orient == "horizontal":
slider.setFixedWidth(300)
else:
slider.setFixedHeight(200)
app.processEvents()
fname = dest / f"grab_{orient[:1]}_{tick}.png"
slider.grab().save(str(fname))
slider.close()
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((10, 40, 60, 90))
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(0, 0, 0, 0)
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__":
from pathlib import Path
dest = Path("screenshots")
dest.mkdir(exist_ok=True)
app = QtW.QApplication([])
demo = DemoWidget()
demo.grab().save(str(dest / "demo_widget.png"))