2023年6月20日发(作者:)

QScrollArea和QScrollBar的属性和样式MyAreaStyle = '''QScrollArea{ background-color: rgba(54, 62, 68, 0.8); border: 0px; border-radius: 0px;}QScrollBar:horizontal

{ background-color: rgba(54, 62, 68, 1); border: 0px; height: 6px;}QScrollBar::handle:horizontal

{ background-color: rgba(126, 160, 185, 1);

height: 6px; border-radius:3px;}QScrollBar::handle:horizontal:hover{ background:#73A4C7; height:6px;}QScrollBar::handle:horizontal:pressed{ background-color: rgba(126, 160, 185, 1);

height:6px;}QScrollBar::add-line:horizontal{ width: 0px;}QScrollBar::sub-line:horizontal{ width: 0px;}QScrollBar::add-page:horizontal{ background-color: rgba(54, 62, 68, 1);}QScrollBar::sub-page:horizontal{ background-color: rgba(54, 62, 68, 1);}'''class MyArea(QScrollArea): def __init__(self, parent=None): super().__init__(parent) # 这个⽤于容纳每个⼩窗⼝,根据窗⼝数量的多少去改变⾼度,从⽽显⽰出⽗窗⼝的滚动条 = QWidget(self) leSheet(WidBackgroundStyle) (40, 80) # 纵向滚动条始终不显⽰ ticalScrollBarPolicy(BarAlwaysOff) _layout = QGridLayout() _tentsMargins(20, 8, 20, 9) _cing(4) out(_layout) get() gnment(Center) # 横向滚动条⼀动就触发_value_changed函数 ntalScrollBar().t(_value_changed) leSheet(MyAreaStyle) def on_value_changed(self): # 获取滚动条滑块的位置 position = ntalScrollBar().sliderPosition()因为这⾥是横向滚动条,都是horizontal,所以add-line是右箭头,sub-line是左箭头,add-page是滑块右侧区域,sub-page是滑块左侧区域。如果是纵向滚动条,则把horizontal改成vertical,同时add-line和sub-line则变成上下箭头,add-page和sub-page则变成滑块上下侧区域(哪个上哪个下⾃⼰测吧,我也忘了)更多样式可以参考下⾯这个链接:⽽在Windows下如果不对滚动条样式设置add-page和sub-page,同时还设置滚动条背景⾊为深颜⾊的话,那么滚动条的背景⾊会变成花斑⾊,有两种颜⾊交叉,即color-dotted。这个时候其实只要设置⼀下add-page和sub-page就可以解决了(Mac下倒是没有这个问题)。具体可以看看下⾯这个链接;

2023年6月20日发(作者:)

QScrollArea和QScrollBar的属性和样式MyAreaStyle = '''QScrollArea{ background-color: rgba(54, 62, 68, 0.8); border: 0px; border-radius: 0px;}QScrollBar:horizontal

{ background-color: rgba(54, 62, 68, 1); border: 0px; height: 6px;}QScrollBar::handle:horizontal

{ background-color: rgba(126, 160, 185, 1);

height: 6px; border-radius:3px;}QScrollBar::handle:horizontal:hover{ background:#73A4C7; height:6px;}QScrollBar::handle:horizontal:pressed{ background-color: rgba(126, 160, 185, 1);

height:6px;}QScrollBar::add-line:horizontal{ width: 0px;}QScrollBar::sub-line:horizontal{ width: 0px;}QScrollBar::add-page:horizontal{ background-color: rgba(54, 62, 68, 1);}QScrollBar::sub-page:horizontal{ background-color: rgba(54, 62, 68, 1);}'''class MyArea(QScrollArea): def __init__(self, parent=None): super().__init__(parent) # 这个⽤于容纳每个⼩窗⼝,根据窗⼝数量的多少去改变⾼度,从⽽显⽰出⽗窗⼝的滚动条 = QWidget(self) leSheet(WidBackgroundStyle) (40, 80) # 纵向滚动条始终不显⽰ ticalScrollBarPolicy(BarAlwaysOff) _layout = QGridLayout() _tentsMargins(20, 8, 20, 9) _cing(4) out(_layout) get() gnment(Center) # 横向滚动条⼀动就触发_value_changed函数 ntalScrollBar().t(_value_changed) leSheet(MyAreaStyle) def on_value_changed(self): # 获取滚动条滑块的位置 position = ntalScrollBar().sliderPosition()因为这⾥是横向滚动条,都是horizontal,所以add-line是右箭头,sub-line是左箭头,add-page是滑块右侧区域,sub-page是滑块左侧区域。如果是纵向滚动条,则把horizontal改成vertical,同时add-line和sub-line则变成上下箭头,add-page和sub-page则变成滑块上下侧区域(哪个上哪个下⾃⼰测吧,我也忘了)更多样式可以参考下⾯这个链接:⽽在Windows下如果不对滚动条样式设置add-page和sub-page,同时还设置滚动条背景⾊为深颜⾊的话,那么滚动条的背景⾊会变成花斑⾊,有两种颜⾊交叉,即color-dotted。这个时候其实只要设置⼀下add-page和sub-page就可以解决了(Mac下倒是没有这个问题)。具体可以看看下⾯这个链接;