一、 QMainWindow menu
建立了一個File菜單欄, 其中包含一個菜單。此菜單将包含一個Exit操作, 如果選擇該操作将終止應用程式。還将建立狀态欄。可以使用 Ctrl Q 快捷方式通路該操作。
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) #QAction 建立一個按鈕、一個圖示、一個Exit标簽、
exitAct.setShortcut('Ctrl+Q') # 定義一個快捷鍵。
exitAct.setStatusTip('Exit application') #第三行建立一個狀态提示當我們将滑鼠指針懸停在菜單項時,狀态欄所示。
exitAct.triggered.connect(qApp.quit) # 按鈕觸發qApp結果
self.statusBar().showMessage('Ready') # 建立一個狀态欄,并在狀态欄顯示Ready
menubar = self.menuBar() #建立一菜單欄
fileMenu = menubar.addMenu('&File') 菜單欄裡建立一個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_())
二、 建立子菜單項
在該示例中,有兩個菜單項。
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) #QMenu 建立一個菜單
impAct = QAction('Import mail', self) # 建立按鈕
impMenu.addAction(impAct) # 在Import子菜單裡添加Import mail按鈕
newAct = QAction('New', self)
fileMenu.addAction(newAct) #在File菜單下添加New 按鈕
fileMenu.addMenu(impMenu) #在File菜單下添加子菜單Import
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Submenu')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
三、 viewMenu
建立一個視圖菜單。該按鈕顯示或隐藏狀态欄, 當狀态欄是可見的,該按鈕被選中。
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QApplication
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) # 建立一個可選按鈕View statusbar, checkable開啟是否可選。
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_())
四、彈出式菜單
請在框體上單擊右鍵,會彈出菜單。
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_())
五、建立工具條
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('exit24.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_())