Как убрать задний план в QScrollBar?

Как в styleSheet убрать эту белую сетку в скроллбаре?

Текст


Ответы (1 шт):

Автор решения: S. Nick

Пожалуйста, всегда предоставляйте минимальный пример !!!

Вот эта строка сделает то что вы хотите:

QScrollBar:vertical {
    ...
    background: transparent;         /*   убрать эту белую сетку в скроллбаре                 
    ...
}

поэкспериментируйте с таблицей стилей QScrollBar


import sys
from PyQt5 import QtWidgets
from PyQt5.QtGui import  QPixmap
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QAction, QLabel, QVBoxLayout, QScrollArea
from threading import Thread


class DragNDropWindow(QWidget): #, Thread):                      # ?
    def __init__(self, parent=None):                             
        super(DragNDropWindow, self).__init__(parent)            

        self.setStyleSheet("""
QWidget {        
    border: none;        
}      

/* QScrollArea ----------------------------------------------------- */
QScrollArea QWidget QWidget:disabled {
    background-color: #232629;          
}

/* QScrollBar ------------------------------------------------------ */

QScrollBar:vertical {
/*    background-color: #foo;             попробуйте раскомментировать, убрав строку ниже     */
    background: transparent;         /*   убрать эту белую сетку в скроллбаре                 */
    width: 16px;
    margin: 16px 2px 16px 2px;       
    border: 0px solid #31363B;       /* попробуйте заменит на это: border: 1px solid #31363B; */
    border-radius: 4px;
}


QScrollBar::handle:vertical {
    background-color: #4D545B;     
    border: 1px solid #31363B;
    min-height: 8px;
    border-radius: 4px;
}

QScrollBar::handle:vertical:hover {
    background-color: #179AE0;      
    border: 1px solid #179AE0;
    border-radius: 4px;
    min-height: 8px;
}

QScrollBar::sub-line:vertical {
    margin: 3px 0px 3px 0px;
    border-image: url(icons/up_arrow_disabled.png);
    height: 10px;
    width: 10px;
    subcontrol-position: top;
    subcontrol-origin: margin;
}

QScrollBar::add-line:vertical {
    margin: 3px 0px 3px 0px;
    border-image: url(icons/down_arrow_disabled.png);
    height: 10px;
    width: 10px;
    subcontrol-position: bottom;
    subcontrol-origin: margin;
}

QScrollBar::sub-line:vertical:hover,
QScrollBar::sub-line:vertical:on {
    border-image: url(icons/up_arrow.png);
    height: 10px;
    width: 10px;
    subcontrol-position: top;
    subcontrol-origin: margin;
}

QScrollBar::add-line:vertical:hover,
QScrollBar::add-line:vertical:on {
    border-image: url(/icons/down_arrow.png);
    height: 10px;
    width: 10px;
    subcontrol-position: bottom;
    subcontrol-origin: margin;
}

QScrollBar::up-arrow:vertical,
QScrollBar::down-arrow:vertical {
    background: none;                   
}

QScrollBar::add-page:vertical,
QScrollBar::sub-page:vertical {
    background: none;                
}
        """)

        self.setWindowFlags(Qt.Window | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground, True)         

        self.background = QLabel(self)                          
        bpixmap = QPixmap('lena-removebg-preview.png')         
        self.background.setPixmap(bpixmap)
        self.background.show()

        with open('test.txt') as mindList:                     
            mindList = mindList.read()
        minds = mindList.split(sep='@@\n@@')

        vbox = QVBoxLayout()
        vbox.addStretch(1)
        vbox.setSpacing(15)

        for i in minds:
            label = QLabel(self)
            label.setText(i)
            label.setFixedWidth(420)
            label.setStyleSheet('''
                font: 10pt "Jack Brusher(RUS BY LYAJKA)";
                background-color: #778899;
                border-radius: 5px;
                color: #FFFFE0;
                padding: 15;
            ''')
            label.setContextMenuPolicy(Qt.ActionsContextMenu)
            action = QAction("Скрыть текст", self)
            action.triggered.connect(label.hide)
            label.addAction(action)
            vbox.addWidget(label)

        label.setWordWrap(True)                                            
        self.setContextMenuPolicy(Qt.ActionsContextMenu)
        action2 = QAction("Показать текст", self)
        action2.triggered.connect(label.show)
        self.addAction(action2)

        self.scrollarea = QScrollArea(self)
        self.scrollarea.resize(self.background.width(), self.background.height())
        self.scrollarea.setWidgetResizable(True)

        area = QWidget()
        area.setAttribute(Qt.WA_TranslucentBackground, True)               
        area.setLayout(vbox)
        self.scrollarea.setWidget(area)

        ''' УБРАЛ
        self.scrollarea.setStyleSheet("""
            QScrollBar:vertical {              

                background: red;
                width: 7px;
                margin: 0px 0px 0px 0px;
            }
        """)
        '''

        self.resize(self.background.width(), self.background.height())
        self._old_pos = None

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self._old_pos = event.pos()

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self._old_pos = None

    def mouseMoveEvent(self, event):
        if not self._old_pos:
            return
        delta = event.pos() - self._old_pos
        self.move(self.pos() + delta)


class MyWin(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('MyWin')
        self.dd = DragNDropWindow(self)      
        self.dd.show()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = MyWin()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка