首页 > 解决方案 > 如何在 Raspberry pi 上的 PyQt5 中使窗口透明?

问题描述

我基本上有2个问题。我正在创建一个 PyQt5 应用程序,其中有一个我使用 mdi 创建的 mainwindow()。我的子窗口是一个模拟时钟和 15 个子窗口,每个子窗口有 14 个按钮。当按下子窗口中的按钮时,它将打开另一个子窗口并且当前子窗口应该关闭。16 个子窗口中的每一个都写在它们自己的类中,我从主窗口类中调用它们。

widget = analogclock()
widget1 = Example()

1) AnalogClock 应该在主窗口的后台永久运行,并且其他子窗口应该是透明的,这样无论打开哪个子窗口,都应该在后台看到analogclock。我已经在代码中尝试了所有可能的透明度指令,但是我没有获得透明度,而是获得了黑色背景。如何使子窗口透明?我在 Linux 操作系统上使用 Raspberry Pi 模块 3b。

2)我正在尝试从同一类的其他方法关闭子窗口。我使用的说明是

class mainwindow(QMainWindow):
    def __init__(self, parent = None):
        QMainWindow.__init__(self, parent)
        self.centralwidget = QWidget(self)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setCentralWidget(self.centralwidget)
        self.centralwidget.setLayout(QVBoxLayout(self.centralwidget))

        self.mdiArea = QMdiArea(self.centralwidget)
        self.centralwidget.layout().addWidget(self.mdiArea)
        self.resize(500, 500)
        subWindow1 = QMdiSubWindow(self)

        widget1 = button.Example()

        subWindow1.setWidget(widget1)
        subWindow1.setFixedSize(310,255)

        subWindow1.move(100,100)
        subWindow1.setWindowFlags(Qt.FramelessWindowHint)
        self.mdiArea.addSubWindow(subWindow1)
        subWindow1.show()

    def c1(self):
        subwindow1.close() 

由于未定义 subwindow1,此指令给出错误,所以我使用

        mainwindow.__init__.subwindow1.close()

或者

        mainwindow.__init__.widget1.close()

我收到一个错误,因为函数分别没有属性“subwindow1”或“widget1”。

    def Tab1(self): #I'm calling this from a button in Example Class
        mainwindow.c1(self)

所以最终我想关闭 subwindow1 以便我可以新建 subwindow2 ..

PS:我没有输入代码,因为它有点冗长,有 15 个类,每个类有 14 个按钮,每个按钮都有一个方法。

谢谢您的帮助..

这些是一些与输出相关的屏幕截图..

2019-03-07-125048_1184x624_scrot.png

2019-03-07-125058_1184x624_scrot.png

标签: pyqt5mdi

解决方案


推荐阅读