PyQt5.QtWidgets.QFrame
Ранее я обращался с вопросом: https://clck.ru/RXRDZ
Решением послужил метод
QFrame.setStyleSheet("border-image: url(image.png);")
Однако теперь я встретился со следующей проблемой: при создании QFrame, в его координатах появляется белый квадрат. Мне бы хотелось этот квадрат убрать и заменить его картинкой.
Сейчас у меня следующий код.
from PyQt5.QtWidgets import QFrame, QApplication
from PyQt5.QtCore import Qt
import sys
class Drawer(QFrame):
def __init__(self):
QFrame.__init__(self, None, Qt.FramelessWindowHint | Qt.MSWindowsFixedSizeDialogHint | Qt.WindowStaysOnTopHint)
self.height = 48
self.width = 48
self.setStyleSheet("border-image: url(image.png);")
self.resize(self.width, self.height)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
drawer = Drawer()
sys.exit(app.exec_())
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
как вариант:
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowFlags(QtCore.Qt.Window |
QtCore.Qt.FramelessWindowHint |
QtCore.Qt.WindowStaysOnTopHint)
window.setGeometry(200, 200, 100, 100)
pixmap = QtGui.QPixmap("Ok.png").scaled(100, 100,
QtCore.Qt.KeepAspectRatio,
QtCore.Qt.FastTransformation)
pal = window.palette()
pal.setBrush(QtGui.QPalette.Normal, QtGui.QPalette.Window, QtGui.QBrush(pixmap))
pal.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, QtGui.QBrush(pixmap))
window.setPalette(pal)
window.setMask(pixmap.mask())
window.show()
sys.exit(app.exec_())
Автор решения: S. Nick
→ Ссылка
Я вижу, что вам очень нравится виджет QFrame и что вы хотите реализовать вашу задумку используя таблицу стилей. Специально для вас:
import sys
from PyQt5.QtWidgets import QFrame, QApplication, QWidget
from PyQt5.QtCore import Qt
class Drawer(QFrame):
def __init__(self):
super().__init__()
self.setAttribute(Qt.WA_TranslucentBackground)
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
self.height = 48
self.width = 48
self.resize(self.width, self.height)
self.widget = QWidget(self)
self.widget.resize(self.width, self.height)
self.widget.setStyleSheet('.QWidget {border-image: url(Ok.png); background: transparent;}')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
drawer = Drawer()
sys.exit(app.exec_())

