PyQt5 Окно с прозрачным фоном
📁 python, пример, работа
Хочу создать окно, которое имеет прозрачный фон внутри.
Перегуглил все варианты. Получаю неизменно черный фон. Вариант с прозрачностью всего окна работает, но не устраивает, так как нужны хорошо видимые рамки окна и пустота внутри.
Пример кода:
from PyQt5.QtWidgets import QApplication, QWidgetfrom PyQt5 import QtCoreclass Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 220) self.setWindowTitle('Example') self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)if __name__ == '__main__': import sys app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_()) Я знаю простой и сложный варианты.
Простой через прозрачность всего виджета:
import sysfrom PyQt5.QtWidgets import QApplication, QWidgetclass Example(QWidget): def __init__(self): super().__init__() self.setWindowTitle('Example') self.setGeometry(300, 300, 300, 220) self.setWindowOpacity(0.6)if __name__ == '__main__': app = QApplication(sys.argv) w = Example() w.show() sys.exit(app.exec_())через удаление рамки окна и отрисовки ее вручную рамки, а еще и логики перемещения окна через клик:
import sysfrom PyQt5.QtWidgets import QApplication, QWidgetfrom PyQt5 import QtGuifrom PyQt5.QtCore import Qt, QPointclass Example(QWidget): def __init__(self): super().__init__() self.setWindowTitle('Example') self.setGeometry(300, 300, 300, 220) self.setAttribute(Qt.WA_TranslucentBackground, True) self.setWindowFlags(Qt.FramelessWindowHint) self.press = False self.last_pos = QPoint(0, 0) def mouseMoveEvent(self, event): if self.press: self.move(event.globalPos() - self.last_pos) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.press = True self.last_pos = event.pos() def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton: self.press = False def paintEvent(self, event: QtGui.QPaintEvent): painter = QtGui.QPainter(self) painter.setPen(QtGui.QPen(Qt.black, 50)) painter.drawRect(self.rect())if __name__ == '__main__': app = QApplication(sys.argv) w = Example() w.show() sys.exit(app.exec_()) Войдите чтобы оставить ответ
Блоги
Настоящее и будущее развития ИИ: классической математики уже недостаточно edited
Основы библиотеки NumPy: массивы, матрицы и математические операции