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