PyQt5基礎學習-QMdiArea(多個子窗口的容納器) 1. QMdiSubWindow(構造單個子窗口) 2.QMdiArea().addSubWindow(QMdiSubWindow())(在多個子窗口容納器添加單個) 3.QMdiSubWindow().cascadeSubWindows(設置界面為重疊) 4.QMdiSubWindow().tileSubWindows(設置界面為展開)


添加菜單欄的組件, 通過點擊菜單欄的組件按鈕來生成新的窗口, 然后對新的窗口進行重疊或者擴張的操作

MultiWindows.py

"""
容納多文檔的窗口

QMdiArea

QMdiSubWindow

"""

import sys, math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class MultiWindows(QMainWindow):
    count = 0

    def __init__(self):
        super(MultiWindows, self).__init__()
        self.setWindowTitle("容納多文檔的窗口")
        #容納多文檔窗口
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        bar = self.menuBar()
        file = bar.addMenu("File")
        file.addAction("New")
        file.addAction("cascade")
        file.addAction("Tiled")

        file.triggered.connect(self.windowaction)

    def windowaction(self, q):
        print(q)
        if q.text() == "New":
            MultiWindows.count += 1
            #設置單個的子窗口
            sub = QMdiSubWindow()
            #在子窗口上添加一個文本編輯框
            sub.setWidget(QTextEdit())
            sub.setWindowTitle("子窗口" + str(MultiWindows.count))
            #將子窗口添加到多個窗口控件上
            self.mdi.addSubWindow(sub)
            sub.show()
        elif q.text() == "cascade":
            #設置窗口的縮放方式為重疊
            self.mdi.cascadeSubWindows()
        elif q.text() == 'Tiled':
            #設置窗口的縮放方式為展開
            self.mdi.tileSubWindows()



if __name__ == "__main__":
    app = QApplication(sys.argv)
    main = MultiWindows()
    main.show()

    sys.exit(app.exec_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM