這篇文章主要介紹PyQt5中菜單欄和工具欄的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

在這一部分,我們學習創建狀態欄,菜單欄和工具欄。一個菜單是位于菜單欄的一組命令。一個工具欄有一些按鈕,這些按鈕在應用程序中擁有一些常用命令。狀態欄顯示狀態信息,通常位于應用窗口下方。
QMainWindow
QMainWindow類提供了一個主應用窗口。這允許我們創建一個帶有狀態欄,工具欄和菜單欄的經典程序框架。
Statusbar(狀態欄)
一個狀態欄是用于顯示狀態信息的一個組件。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage("Ready")
self.setGeometry(300,300,250,150)
self.setWindowTitle("StatusBar")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())狀態欄在QMainWindow組件的幫助下被創建。
self.statusBar().showMessage("Ready")
為了獲取狀態欄,我們調用類QtGui.QMainWindow的statusBar()方法。該方法的第一個調用創建一個狀態欄。子序列調用返回狀態欄對象。showMessage()展示在狀態欄上的信息。
下面是這個小例子程序的運行結果:

簡單的菜單
菜單欄是GUI應用程序的通用組件。他是一組位于多個菜單的命令。(Mac OS以不同的方式對待菜單欄。為了獲得相似的輸出,我們可以添加下列一行:menubar.setNativeMenubar(False)。)
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow,QAction, QApplication, qApp
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAct = QAction(QIcon('exit.png'),'&Exit',self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip("Exit application")
exitAct.triggered.connect(qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAct)
self.setGeometry(300,300,300,200)
self.setWindowTitle("Simple menu")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())在上面的例子程序中,我們創建了一個帶有一個菜單的菜單欄。這個菜單包含一個動作,如果選中的話,將會終止該應用程序。當然,也創建了一個狀態欄。這個動作也可以使用Ctrl+Q快捷鍵。
exitAct = QAction(QIcon("exit.png"),"&Exit",self)
exitAct.setShortcut("Ctrl+Q")
exitAct.setStatusTip("Exit application")QAction是一個運行在菜單欄,工具欄和定制鍵盤快捷鍵的抽象類。在上面三行中,我們使用特定的圖標和一個'Exit'標簽創建了一個行為。進一步說,一個快捷鍵為了這個行為被定義。第三行創建了一個狀態提示,當鼠標經過該菜單選項的時候,被顯示在狀態欄上。
exitAct.triggered.connect(qApp.quit)
當我們選中這個特定的行為的時候,一個觸發的信號被提交。該信號被連接到QApplication組件的quit()方法。這個會終止這個程序。
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAct)menuBar()方法創建了一個菜單欄。我們使用addMenu()創建了一個文件按鈕,并且使用addAction()方法添加一個行為。
下面是該小例子的截圖:
![enter description here][2
子菜單
一個子菜單是位于另外一個菜單中的一個菜單。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QMenu, QApplication
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
menubar = self.menuBar()
fileMenu = menubar.addMenu("File")
impMenu = QMenu("Import",self)
impAct = QAction("Import mail",self)
impMenu.addAction(impAct)
newAct = QAction("New", self)
fileMenu.addAction(newAct)
fileMenu.addMenu(impMenu)
self.setGeometry(300,300,300,200)
self.setWindowTitle("Submenu")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())在這個例子中,我們有兩個菜單選項;一個位于文件菜單中,另一個位于文件的Import子菜單中。
impMenu = QMenu("Import", self)新的菜單使用QMenu創建。
impAct = QAction("Import mail", self)
impMenu.addAction(impAct)一個行為通過使用addAction()被添加到子菜單中。

選項菜單
在下面的例子中,我們創建了一個按鈕可以被選中或者是不被選中。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QAction
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusbar = self.statusBar()
self.statusbar.showMessage("Ready")
menubar = self.menuBar()
viewMenu = menubar.addMenu("View")
viewStatAct = QAction("View statusbar",self,checkable=True)
viewStatAct.setStatusTip("View statusbar")
viewStatAct.setChecked(True)
viewStatAct.triggered.connect(self.toggleMenu)
viewMenu.addAction(viewStatAct)
self.setGeometry(300,300,300,200)
self.setWindowTitle("Check menu")
self.show()
def toggleMenu(self,state):
if state:
self.statusbar.show()
else:
self.statusbar.hide()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())這個代碼例子創建了帶有一個行為的視圖菜單。這個行為顯示或者是隱藏狀態欄。當狀態欄可視的時候,菜單選項被選中。
viewStatAct = QAction('View statusbar', self, checkable=True)使用checkable選項,我們創建了一個可選擇菜單。
viewStatAct.setChecked(True)
因為狀態欄在一開始的時候是可視的,我們使用setChecked()方法來設置該行為。
def toggleMenu(self, state): if state: self.statusbar.show() else: self.statusbar.hide()
依賴于行為選中的狀態,我們設置狀態欄是否顯示。

上下文菜單
一個上下文菜單,也被稱作彈出菜單,一個出現在一些上下文中的一個命令列表。例如,在一個Opera網頁瀏覽器中,當你在一個網頁中右擊的時候,我們獲得一個上下文菜單。在這里我們可以重新加載一個頁面,回退,或者是查看頁面源碼。如果我們右擊一個工具欄,我們將會得到管理工具欄的另一個上下文菜單。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, qApp,QMenu,QApplication
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300,300,300,200)
self.setWindowTitle("Context menu")
self.show()
def contextMenuEvent(self,event):
cmenu = QMenu(self)
newAct = cmenu.addAction("New")
opnAct = cmenu.addAction("Open")
quitAct = cmenu.addAction("Quit")
action = cmenu.exec_(self.mapToGlobal(event.pos()))
if action == quitAct:
qApp.quit()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())為了能夠使用上下文菜單,我們必須重新集成contextMenuEvent()方法。
action = cmenu.exec_(self.mapTpGlobal(event.pos()))
該上下文菜單被exec_()方法顯示。他們從事件對象中獲得鼠標指針的坐標。mapToGlobal()方法傳遞組件的坐標到全局的屏幕坐標。
if action == quitAct: qApp.quit()
如果從上下文菜單返回的行為等于退出行為,則程序被終止。
工具欄
在一個應用程序中,菜單欄組織了所有的命令。工具欄提供了常用命令的快速訪問途徑。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp,QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAct = QAction(QIcon("exit.png"),"Exit",self)
exitAct.setShortcut("Ctrl+Q")
exitAct.triggered.connect(qApp.quit)
self.toolbar = self.addToolBar("Exit")
self.toolbar.addAction(exitAct)
self.setGeometry(300,300,300,200)
self.setWindowTitle("Toolbar")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())在上面的例子中,我們創建了一個簡單的工具欄。工具欄有一個工具行為,一個退出行為,當觸發的時候終止程序。
exitAct = QAction(QIcon("exit.png"),"Exit",self)
exitAct.setShortcut("Ctrl+Q")
exitAct.triggered.connect(qApp.quit)和上面例子中的菜單欄一樣,我們創建了一個行為對象。該對象有一個標簽,圖標和一個快捷方式。Qt.QMainWindow中的一個quit()方法被連接到觸發信號中。
self.toolbar = self.addToolBar("Exit")
self.toolbar.addAction(exitAct)工具欄被addToolBar()被創建。我們使用addAction()方法添加一個行為對象到工具欄中。
把他們放到一起
在最后一個例子中,我們將會創建一個菜單欄,工具欄和一個狀態欄。我們也將會創建一個中心的組件。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction,QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
textEdit = QTextEdit()
self.setCentralWidget(textEdit)
exitAct = QAction(QIcon("exit.png"),"Exit",self)
exitAct.setShortcut("Ctrl+Q")
exitAct.setStatusTip("Exit application")
exitAct.triggered.connect(self.close)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAct)
toolbar = self.addToolBar("Exit")
toolbar.addAction(exitAct)
self.setGeometry(300,300,350,250)
self.setWindowTitle("Main Window")
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())在這里,我們創建了一個文本編輯組件。我們也把它設置成為QMainWindow的中心組件。中心組件被分為剩余空間的所有空間。
以上是“PyQt5中菜單欄和工具欄的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯成都網站設計公司行業資訊頻道!
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
標題名稱:PyQt5中菜單欄和工具欄的示例分析-創新互聯
標題路徑:http://www.yijiale78.com/article24/deosce.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、App設計、標簽優化、建站公司、全網營銷推廣、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯