python PYQT5 ScrollBar 滚动条QSS自定义设置

网上主要是关于C++的QSS设置,和python大致相同,但还是有一些区别。为了避免麻烦,在这里做一下记录和分享,方便以后的使用。以竖直(vertical)的滚动条为例。注意,使用的时候请将每行代码后面的注释删掉再运行代码,否则代码运行不出效果。
关键点:
1.需要将对scrollarea的QSS设置拆分为对scrollAreaWidgetContents和scrollbar的设置,如下所示,否则scrollarea的整体设置将覆盖scrollbar的设置,使得scrollbar的设置无效。
2.为了清楚看到每一部分的作用,这段代码中用了一些比较显眼的颜色,读者要使用时可以自行调整。
3.代码中涉及到箭头图片路径的部分,如image:url('./pictures/up-arrow.jpg'),读者自行从网上下载图片,然后把路径改成自己电脑里放图片的路径即可。 

self.scrollAreaWidgetContents.setStyleSheet('''
QWidget{
background:white;
}
''')

self.scrollArea.setStyleSheet('''
QWidget{background:red;}  # 调整滚动条的背景颜色
QScrollBar:vertical  # 竖直滚动条,水平滚动条用horizontal,vertical、horizontal都不加则表示所有滚动条
{
    border-radius:7px;  # 滚动条的滑轨的圆角
    background:blue;  # 滚动条的滑轨的背景颜色
    padding-top:14px;  # 滚动条上部增加padding
    padding-bottom:14px;  # 同理

}
QScrollBar::handle:vertical
{
    background:darkgray;  # 滚动条颜色
    border-radius:6px;  # 滚动条圆角
    margin-left:2px;  # 滚动条和滑轨之间的左间隙
    margin-right:2px;  # 同理
}
QScrollBar::handle:vertical:hover  # 鼠标放上滑块滑块变色
{
    background:gray;
    border-radius:6px;
}
QScrollBar::add-line:vertical  # 下方箭头
{
    height:14px;width:8px;  # 设置箭头区域的宽高
    image:url('./pictures/down-arrow.jpg');  # 自己在网上找的箭头图片。如果不需要箭头,可将引号里面的路径去除,设置为             image:url('')即可
}
QScrollBar::sub-line:vertical  # 上方箭头
{
    height:14px;width:8px;
    image:url('');  # 这里设置为空,方便和下箭头对比
}
QScrollBar::add-line:vertical:hover  # 鼠标放到下箭头箭头变成其他图片
{
    height:14px;width:8px;
    image:url('./pictures/down-down-arrow.jpg');
    subcontrol-position:bottom;
}
QScrollBar::sub-line:vertical:hover  # 鼠标放到上箭头箭头变成其他图片
{
    height:14px;width:8px;
    image:url('');  # 这里设置为空,方便和下箭头对比
    subcontrol-position:top;
}
QScrollBar::add-page:vertical  # 滑块已经经过的滑轨区域的颜色,若没有这里的设置,该区域会呈现网格状,不美观
{
    background:green;
}
QScrollBar::sub-page:vertical  #  滑块还没经过的滑轨区域的颜色,若没有这里的设置,该区域会呈现网格状,不美观
{
    background:red; 
}
''')

下图为效果图。

此外,还有QScrollBar::up-arrow:vertical等箭头设置,但我目前的尝试并没有成功,如有兴趣,参考链接https://blog.csdn.net/Zzhouzhou237/article/details/73613278进行尝试。

你可能感兴趣的:(滚动条,pyqt5,python)