介紹
在QMainWindow對象的標題欄下方,水平的QmenuBar被保留QMenu對象。
QMenu類提供了一個key添加到菜單欄的小控件,也用於創建上下文菜單和彈出菜單。每個QMenu對象都可以包含一個或多個QAction對象或級聯的QMenu對象。
要創建一個彈出菜單,PyQt API提供了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信號。
代碼
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MenuDemo(QMainWindow):
def __init__(self,parent=None):
super(MenuDemo,self).__init__(parent)
layout = QHBoxLayout()
bar = self.menuBar()
file = bar.addMenu("File")
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)
file.triggered[QAction].connect(self.processtrigger)
self.setLayout(layout)
self.setWindowTitle("menu例子")
def processtrigger(self,q):
print(q.text()+" is triggered")
if __name__ == "__main__":
app = QApplication(sys.argv)
demo = MenuDemo()
demo.show()
sys.exit(app.exec_())
展示
後記
發現截圖的時候打不開,打開的時候不能截圖,所以就這樣了。