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

Posted

技术标签:

【中文标题】创建与矩形不同形状的 pyside 应用程序【英文标题】:Create pyside application in different shape than rectangle 【发布时间】:2018-09-21 10:01:41 【问题描述】:

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

我们知道,当我们将主窗口用于我们的应用程序时,它带有矩形形状。

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

例如查看下面的 Zoiper 应用程序图片。

背景是我的编辑器加上一些文字,你可以很容易地感觉到应用程序的外边框。

我们可以使用 pyside2 实现同样的目标吗?

提前致谢。

【问题讨论】:

【参考方案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_())

【讨论】:

以上是关于创建与矩形不同形状的 pyside 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL - 如何使用弹出菜单绘制多个不同的 2D 形状?

如何在 HTML 的图例中指定不同的形状?

如何制作非矩形形状的图像

如何在 Visual C++ 中使用具有颜色和形状的工具栏创建绘图应用程序

SwiftUI - 文本和形状位置之间的不一致

当试图最小化包含不同整数形状的矩形的矩形空间时,是不是可以避免回溯?