Как сделать прозрачный фон у QGraphicsView? Python PyQt5
Всем привет. Хочу сделать интерфейс, как на скриншоте при помощи QGraphicsScene. Но из-за особенностей QGraphicsView он не имеет прозрачного фона. И в итоге по краям белый фон видно. К тому же почему-то картинка не полностью влезает в QGraphicsView и ее можно прокручивать на 1-2 пикселя вверх-вниз.
Что делать? Скриншоты и код прилагаю. (Сама картинка уже имеет прозрачный фон. Белое вокруг картинки - это фон QGraphicsView)
class NoteBook(QWidget):
def __init__(self, parent=None):
super(NoteBook, self).__init__(parent)
self.pix = QPixmap("noteBook.png")
scene = QGraphicsScene(self)
self.pixScene = scene.addPixmap(self.pix.scaled(self.size()))
self.view = QGraphicsView(scene, self)
self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.show()
def paintEvent(self, e):
self.view.resize(self.size())
self.pixScene.setPixmap(self.pix.scaled(self.size()))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант, примерно так:
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.Qt import *
class NoteBook(QWidget):
def __init__(self, parent=None):
super(NoteBook, self).__init__(parent)
self.resize(560, 500)
self.widget = QWidget()
self.widget.setObjectName('Custom_Widget')
layout = QVBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(self.widget)
self.pix = QPixmap("linux.gif")
self.scene = QGraphicsScene()
self.pixScene = self.scene.addPixmap(self.pix.scaled(self.widget.size().width()*4/5,
self.widget.size().height()))
self.view = QGraphicsView(self.scene)
self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setRenderHint(QPainter.HighQualityAntialiasing)
grid = QGridLayout(self.widget)
grid.setContentsMargins(0, 0, 0, 0)
self.btn = QPushButton("кнопка 1")
grid.addWidget(self.btn, 1, 0)
grid.addWidget(QPushButton("кнопка 2"), 2, 0)
grid.addWidget(self.view, 0, 1, 4, 1)
def paintEvent(self, e):
self.view.resize(self.widget.size().width()*4/5, self.widget.size().height())
self.pixScene.setPixmap(self.pix.scaled(self.widget.size().width()*4/5,
self.widget.size().height()))
def resizeEvent(self, event):
self.view.resize(self.widget.size().width()*4/5,
self.widget.size().height())
self.scene.setSceneRect(self.rect().x(), self.rect().y(), self.rect().width()*4/5,
self.rect().height())
Stylesheet = """
.QWidget {
border-image: url(cats.jpg);
}
QGraphicsView {
/* ВАЖНО ------------>>>>>>> 0 */
background: rgba(55, 55, 255, 0);
border: None;
}
"""
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyleSheet(Stylesheet)
ex = NoteBook()
ex.show()
sys.exit(app.exec_())




