创建形状与矩形不同的pyside应用程序

时间:2018-09-21 10:01:42

标签: python pyside2

我正在Pyside2中构建一个应用程序。

我们知道,当我们在应用程序中使用mainwindow时,它带有矩形形状。

但是我希望用户定义应用程序的形状。

例如,检查下面的Zoiper应用程序图像。

enter image description here

背景是我的编辑器,带有一些文本,您可以轻松感受到应用程序的外部边界。

我们可以使用pyside2实现相同的功能吗?

先谢谢了。

1 个答案:

答案 0 :(得分:0)

创建一个透明的小部件。有两行很重要:

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_())