将QStackedWidget用于多窗口PyQt应用程序

时间:2017-08-10 21:46:02

标签: python qt pyqt pyqt5 qstackedwidget

我有一个多窗口PyQt5(带有Qt 5.9.0的Python 3.6.2)应用程序,当在标准桌面(即窗口管理)环境中运行时,它可以很好地工作。我的目标平台是嵌入式设备(例如Raspberry Pi,i.MX6等),我不会使用X11窗口系统。我目前正在使用eglfs平台测试嵌入式设备,该平台不支持多个窗口。我正在考虑使用QtWayland平台,或者修改我的方法来使用QtStackedWidget将'windows'作为堆栈中的单个页面包含。

如何修改以下高级窗口应用程序以利用QStackedWidget排列,以便在无窗口环境中实现多页面应用程序?

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow

from ui_Main import Ui_Main
from ui_Window1 import Ui_Window1
from ui_Window2 import Ui_Window2

class Main(QMainWindow, Ui_Main):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)

        #Initialisation functions

        self.PushButton1.clicked.connect(self.OpenWindow1)
        self.PushButton2.clicked.connect(self.OpenWindow2)

    def OpenWindow1(self):
        showWindow1.show()

    def OpenWindow2(self):
        showWindow2.show()

class Window1(QMainWindow, Ui_Window1):
    def __init__(self, parent=None):
        super(Window1, self).__init__(parent)
        self.setupUi(self)

class Window2(QMainWindow, Ui_Window2):
    def __init__(self, parent=None):
        super(Window2, self).__init__(parent)
        self.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    showMain = Main()
    showWindow1 = Window1()
    showWindow2 = Window2()
    showMain.show()

    app.exec_()

0 个答案:

没有答案