日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)

發(fā)布時(shí)間:2023/11/27 生活经验 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一個(gè)典型的GUI應(yīng)用程序可能有多個(gè)窗口,選項(xiàng)卡控件和堆棧窗口控件允許一次使用其中的一個(gè)窗口。然而,很多時(shí)候這種方法不是很有用,因?yàn)槠渌翱诘囊晥D是隱藏的一種同時(shí)顯示多個(gè)窗口的方法是,創(chuàng)建多個(gè)獨(dú)立的窗口,這些獨(dú)立的窗口被稱為SDI(Single Document Interface,單文檔界面),每個(gè)窗口都可以有自己的菜單系統(tǒng)、工具欄等。這需要占用較多的內(nèi)存資源。

MDI (Multiple Document Interface,多文檔界面)應(yīng)用程序占用較少的內(nèi)存資源,子窗口都可以放在主窗口容器中,這個(gè)容器控件被稱為QMdiArea。

QMidArea控件通常占據(jù)在QMainWindow對象的中央位置,子窗口在這個(gè)區(qū)域是QMdiSubWindow類的實(shí)例,可以設(shè)置任何QWidget作為子窗口對象的內(nèi)部控件,子窗口在MDI區(qū)域進(jìn)行級聯(lián)排列布局。

QMdiArea類和QMdiSubWindow類中的常用方法如下表所示:

通過示例,了解QMdiArea類和QMdiSubWindow類多文檔界面的使用方法,效果如下所示:

示例中,主窗口QMainWindow擁有一個(gè)菜單控件和MidArea控件。當(dāng)單擊菜單控件時(shí)觸發(fā)triggered信號,連接到槽函數(shù)windowaction()。當(dāng)選擇菜單中的“New"動(dòng)作時(shí),會添加一個(gè)新的MDI,每個(gè)MDI都有標(biāo)題,在主窗口內(nèi)部會增加MDI的數(shù)量。當(dāng)選擇菜單中的“cascade"和"Tiled"動(dòng)作時(shí),會在主窗口中顯示子窗口的排列方式:級聯(lián)顯示子窗口或平鋪顯示子窗口。

實(shí)現(xiàn)代碼如下所示:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *class MainWindow(QMainWindow):count=0def __init__(self, parent=None):super(MainWindow, self).__init__(parent)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[QAction].connect(self.windowaction)self.setWindowTitle("MDI demo")def windowaction(self, q): print( "triggered")if q.text()=="New":MainWindow.count=MainWindow.count+1sub=QMdiSubWindow()sub.setWidget(QTextEdit())sub.setWindowTitle("subwindow"+str(MainWindow.count))self.mdi.addSubWindow(sub)sub.show()if q.text()=="cascade":self.mdi.cascadeSubWindows()if q.text()=="Tiled":self.mdi.tileSubWindows()if __name__ == '__main__':app = QApplication(sys.argv)demo = MainWindow()demo.show()sys.exit(app.exec_())

總結(jié)

以上是生活随笔為你收集整理的Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。