1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5選單欄控制元件QMenuBar的詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5選單欄控制元件QMenuBar的詳細使用方法與例項

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_())

執行程式,顯示效果如圖

python GUI庫圖形介面開發之PyQt5選單欄控制元件QMenuBar的詳細使用方法與例項

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選單欄控制元件的使用知識請檢視下面的相關連結