Создайте приложение pyside в форме, отличной от прямоугольника

Я создаю приложение в Pyside2.

Как мы знаем, когда мы используем главное окно для нашего приложения, оно имеет прямоугольную форму.

Но я хочу, чтобы пользователь определял форму приложения.

Например, посмотрите ниже изображение приложения Zoiper.

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

Фоном служит мой редактор с каким-то текстом, вы легко прочувствуете внешнюю границу приложения.

Можем ли мы добиться того же, используя pyside2?

Заранее спасибо.


person Lalit Tarsariya    schedule 21.09.2018    source источник


Ответы (1)


Создайте прозрачный виджет. Важны две строки:

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_())
person Matphy    schedule 04.10.2018