Python QSlider手柄尺寸PyQt5 我试图增加QSLILE手柄的宽度,使它在小屏幕上更易于用户使用,但我在C++中只找到了这样做的方法。
我尝试使用以下代码在python中实现这一点,只是为了更改滑块的颜色:Python QSlider手柄尺寸PyQt5 我试图增加QSLILE手柄的宽度,使它在小屏幕上更易于用户使用,但我在C++中只找到了这样做的方法。,python,pyqt,pyqt5,qtstylesheets,qslider,Python,Pyqt,Pyqt5,Qtstylesheets,Qslider,我尝试使用以下代码在python中实现这一点,只是为了更改滑块的颜色: self.Zoom.setStyleSheet(""" QSlider::handle:horizontal { height: 80px; } """
self.Zoom.setStyleSheet("""
QSlider::handle:horizontal {
height: 80px;
}
""")
关于如何正确使用QWidget.setStyleSheet()的任何建议。一个可能的解决方案是使用QProxyStyle:
from PyQt5 import QtCore, QtWidgets
class SliderProxyStyle(QtWidgets.QProxyStyle):
def pixelMetric(self, metric, option, widget):
if metric == QtWidgets.QStyle.PM_SliderThickness:
return 40
elif metric == QtWidgets.QStyle.PM_SliderLength:
return 40
return super().pixelMetric(metric, option, widget)
class TestWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
style = SliderProxyStyle(self.slider.style())
self.slider.setStyle(style)
lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(self.slider)
lay.addStretch()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle("fusion")
w = TestWindow()
w.show()
app.exec_()
之前
之后
一种可能的解决方案是使用QSS:
from PyQt5 import QtCore, QtWidgets
class TestWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
self.slider.setMinimumHeight(70)
lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(self.slider)
lay.addStretch()
QSS = """
/* QSlider -------------------------------------- */
QSlider::groove:horizontal {
border-radius: 1px;
height: 3px;
margin: 0px;
background-color: rgb(52, 59, 72);
}
QSlider::groove:horizontal:hover {
background-color: rgb(55, 62, 76);
}
QSlider::handle:horizontal {
background-color: rgb(85, 170, 255);
border: none;
height: 40px;
width: 40px;
margin: -20px 0;
border-radius: 20px;
padding: -20px 0px;
}
QSlider::handle:horizontal:hover {
background-color: rgb(155, 180, 255);
}
QSlider::handle:horizontal:pressed {
background-color: rgb(65, 255, 195);
}
"""
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle("fusion")
app.setStyleSheet(QSS)
w = TestWindow()
w.show()
sys.exit(app.exec_())
看看这个。似乎你必须编辑手柄和凹槽才能让样式表解决方案工作。清洁解决方案并立即工作。非常感谢。