Я создаю приложение в Pyside2.
Как мы знаем, когда мы используем mainwindow для нашего приложения, он имеет форму прямоугольника.
Но я хочу, чтобы пользователь определял форму приложения.
Например, проверьте изображение приложения Zoiper.
Фон - это мой редактор с некоторым текстом, вы можете легко почувствовать внешнюю границу приложения.
Можем ли мы добиться того же, используя pyside2?
Заранее спасибо.
Создайте прозрачный виджет. Важны две линии:
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)
self.setAttribute(Qt.WA_TranslucentBackground)
Рабочий пример:
from PySide2.QtCore import Qt
from PySide2.QtGui import QColor, QPainterPath, QPainter
from PySide2.QtWidgets import QApplication, QWidget
class WCustomShape(QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)
self.setFixedSize(400, 300)
self.setAttribute(Qt.WA_TranslucentBackground)
def paintEvent(self, e):
painter = QPainter(self)
path = QPainterPath()
path.addEllipse(200, 150, 100, 50)
painter.fillPath(path, QColor(Qt.blue))
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
main_window = WCustomShape()
main_window.show()
main_window.raise_()
sys.exit(app.exec_())