PyQt6中QMainWindow組件的使用詳解
如果把QWidget比做一間毛坯房,那QMainWindow就是在毛坯房的基礎(chǔ)上劃分了五個(gè)房間:菜單欄、工具欄、中央部件、??看翱?、狀態(tài)欄 ,各個(gè)房間都有一些裝飾工具,能夠更好、更快的布置房間。
1. QMainWindow 組件概述
QMainWindow
提供了一個(gè)標(biāo)準(zhǔn)的應(yīng)用程序窗口結(jié)構(gòu),包含多個(gè)重要的部件:
- 中央部件 (Central Widget):這是 QMainWindow 的核心區(qū)域,通常顯示應(yīng)用的大部分內(nèi)容??梢酝ㄟ^(guò)
setCentralWidget(widget)
方法來(lái)設(shè)置中央部件。 - 菜單欄 (Menu Bar):通過(guò)
menuBar()
方法創(chuàng)建應(yīng)用程序的菜單,允許添加菜單項(xiàng)。 - 工具欄 (Tool Bar):通過(guò)
addToolBar()
方法將工具欄添加到窗口。 - 狀態(tài)欄 (Status Bar):通過(guò)
statusBar()
方法在窗口底部顯示狀態(tài)信息。 - ??看翱?(Dock Widgets):通過(guò)
addDockWidget()
向主窗口添加可??看翱?,增加應(yīng)用界面的靈活性。
2. 使用 QMainWindow
import sys from PyQt6.QtCore import Qt from PyQt6.QtGui import QAction from PyQt6.QtWidgets import * class AppMainWindow(QMainWindow): def __init__(self): super(AppMainWindow, self).__init__() self.setWindowTitle("QMainWindow 案例") self.resize(800, 600) # 中央?yún)^(qū)域 self.init_central() # 菜單欄 self.init_menubar() # 工具欄 self.init_toolbar() # 狀態(tài)欄 self.init_statusbar() # ??看翱? self.init_dock() # 信號(hào)-槽 self.init_signal() def init_central(self): self.central_label = QLabel("我是中央部件") self.setCentralWidget(self.central_label) def init_menubar(self): menubar = self.menuBar() # 創(chuàng)建菜單 file_menu = menubar.addMenu("文件") # 添加菜單項(xiàng) exit_action = QAction("退出", self) exit_action.triggered.connect(self.close) file_menu.addAction(exit_action) def init_toolbar(self): tool_bar = QToolBar("工具欄") # 添加工具到工具欄 exit_action = QAction("退出",self) exit_action.triggered.connect(self.close) tool_bar.addAction(exit_action) self.addToolBar(tool_bar) def init_statusbar(self): status_bar = QStatusBar() status_bar.showMessage("這是一個(gè)狀態(tài)欄") self.setStatusBar(status_bar) def init_dock(self): dock_widget = QDockWidget("停留窗口", self) self.list_widget = QListWidget() for i in range(5): item = QListWidgetItem(f'item {i}') self.list_widget.addItem(item) dock_widget.setWidget(self.list_widget) self.addDockWidget(Qt.DockWidgetArea.LeftDockWidgetArea, dock_widget) def init_signal(self): # 雙擊 listwidget內(nèi)容 self.list_widget.itemDoubleClicked.connect(self.show_central_msg) def show_central_msg(self): current_item = self.list_widget.currentItem() if current_item.text(): self.central_label.setText(current_item.text()) if __name__ == '__main__': app = QApplication(sys.argv) window = AppMainWindow() window.show() sys.exit(app.exec())
3. QMainWindow的進(jìn)階功能
3.1. 窗口菜單和工具欄的自定義
你可以為菜單項(xiàng)和工具欄按鈕設(shè)置快捷鍵,以及動(dòng)態(tài)更新?tīng)顟B(tài)欄信息。
3.2. 多文檔界面 (MDI) 支持
QMainWindow
支持通過(guò) QMdiArea
和 QMdiSubWindow
來(lái)創(chuàng)建多文檔界面(MDI)。
3.3. 事件處理
QMainWindow
支持處理常見(jiàn)的事件,如 closeEvent()
, resizeEvent()
,以便在事件發(fā)生時(shí)執(zhí)行特定操作。
4. 總結(jié)
QMainWindow
是構(gòu)建桌面應(yīng)用程序的基礎(chǔ),它通過(guò)提供多個(gè)標(biāo)準(zhǔn)窗口部件使得開(kāi)發(fā)者可以專注于應(yīng)用的功能實(shí)現(xiàn)。無(wú)論是菜單欄、工具欄、狀態(tài)欄還是??看翱冢?code>QMainWindow 都能輕松構(gòu)建一個(gè)專業(yè)級(jí)的應(yīng)用程序界面。
到此這篇關(guān)于PyQt6中QMainWindow組件的使用詳解的文章就介紹到這了,更多相關(guān)PyQt6 QMainWindow組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python學(xué)習(xí)筆記之While循環(huán)用法分析
這篇文章主要介紹了Python學(xué)習(xí)筆記之While循環(huán)用法,結(jié)合具體實(shí)例形式分析了while循環(huán)的原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-08-08Python語(yǔ)言中的重要函數(shù)對(duì)象用法小結(jié)
Python作為一種強(qiáng)大的編程語(yǔ)言,提供了多種高級(jí)函數(shù)對(duì)象,如lambda匿名函數(shù)、map()、reduce()函數(shù),以及迭代器和生成器的使用,本文給大家介紹Python語(yǔ)言中的重要函數(shù)對(duì)象用法,感興趣的朋友跟隨小編一起看看吧2024-09-09Python函數(shù)默認(rèn)參數(shù)常見(jiàn)問(wèn)題及解決方案
這篇文章主要介紹了Python函數(shù)默認(rèn)參數(shù)常見(jiàn)問(wèn)題及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03pandas基于時(shí)間序列的固定時(shí)間間隔求均值的方法
今天小編就為大家分享一篇pandas基于時(shí)間序列的固定時(shí)間間隔求均值的方法,具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python數(shù)據(jù)分析庫(kù)pandas基本操作方法
下面小編就為大家分享一篇Python數(shù)據(jù)分析庫(kù)pandas基本操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python數(shù)據(jù)處理實(shí)戰(zhàn)(必看篇)
下面小編就為大家?guī)?lái)一篇python數(shù)據(jù)處理實(shí)戰(zhàn)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06Python多進(jìn)程入門、分布式進(jìn)程數(shù)據(jù)共享實(shí)例詳解
這篇文章主要介紹了Python多進(jìn)程入門、分布式進(jìn)程數(shù)據(jù)共享,結(jié)合實(shí)例形式詳細(xì)分析了Python進(jìn)程操作技巧數(shù)據(jù)共享相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2019-06-06