python GUI庫圖形介面開發之PyQt5選單欄控制元件QMenuBar的詳細使用方法與例項
阿新 • • 發佈:2020-02-28
PyQt5選單欄控制元件QMenuBar介紹
QMenuBar在QMainWindow物件的標題欄下方,水平的QMenuBar被保留顯示QMenu物件
QMenuBar類提供了一個可以包含一個或多個QAction物件或 級聯的QMenu物件,要建立一個彈出選單,Pyqt提供了createPopupMenu()函式,menuBar()函式用於返回主視窗的QMenuBar物件:addMenu()函式可以將選單新增到選單欄中,通過addAction()函式可以在選單中進行新增操作
設計菜單系統時常用的一些重要方法
方法 | 描述 |
---|---|
menuBar() | 返回主視窗的QMenuBar物件 |
addMenu() | 在選單欄中新增一個新的QMenu物件 |
addAction() | 向QMenu小控制元件中新增一個操作按鈕,其中包含文字或圖示 |
setEnabled() | 將操作按鈕設定為啟用/禁用 |
addSeperator() | 在選單中新增一條分割線 |
clear() | 刪除選單欄的內容 |
setShortcut() | 將快捷鍵關聯到操作按鈕 |
setText() | 設定選單項的文字 |
setTitle() | 設定QMenu小控制元件的標題 |
text() | 返回與QACtion物件關聯的文字 |
title() | 返回QMenu小控制元件的標題 |
單擊任何QAction按鈕時,QMenu物件都會發射triggered訊號
QMenuBar的使用例項
import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * class MenuDemo(QMainWindow): def __init__(self,parent=None): super(MenuDemo,self).__init__(parent) #水平佈局 layout=QHBoxLayout() #例項化主視窗的QMenuBar物件 bar=self.menuBar() #向選單欄中新增新的QMenu物件,父選單 file=bar.addMenu('File') #向QMenu小控制元件中新增按鈕,子選單 file.addAction('New') #定義響應小控制元件按鈕,並設定快捷鍵關聯到操作按鈕,新增到父選單下 save=QAction('Save',self) save.setShortcut('Ctrl+S') file.addAction(save) #建立新的子選單項,並新增孫選單 edit=file.addMenu('Edit') edit.addAction('Copy') edit.addAction('Paste') #新增父選單下 quit=QAction('Quit',self) file.addAction(quit) #單擊任何Qmenu物件,都會發射訊號,繫結槽函式 file.triggered[QAction].connect(self.processtrigger) #設定佈局及標題 self.setLayout(layout) self.setWindowTitle('menu例子') def processtrigger(self,q): #輸出那個Qmenu物件被點選 print(q.text()+'is triggeres') if __name__ == '__main__': app=QApplication(sys.argv) demo=MenuDemo() demo.show() sys.exit(app.exec_())
執行程式,顯示效果如圖
QMenuBar程式碼分析
在這個例子中,頂層視窗必須是QMainWindow物件,才可以引用QMenuBar物件
通過addMenu()方法將‘File'選單新增到選單欄
bar=self.menuBar() #向選單欄中新增新的QMenu物件,父選單 file=bar.addMenu('File')
選單欄中的操作按鈕可以是字串或QAction物件
file.addAction('New') #定義響應小控制元件按鈕,並設定快捷鍵關聯到操作按鈕,新增到父選單下 save=QAction('Save',self) save.setShortcut('Ctrl+S') file.addAction(save)
將子選單新增到頂級選單中
edit=file.addMenu('Edit') edit.addAction('Copy') edit.addAction('Paste')
選單發射triggered訊號,將訊號連線到槽函式processtrigger()該函式接受訊號的QAction物件
file.triggered[QAction].connect(self.processtrigger)
本文詳細講解了PyQt5選單欄控制元件QMenuBar的使用方法與例項,更多關於PyQt5選單欄控制元件的使用知識請檢視下面的相關連結