PyQt5是基于Qt应用程序框架的Python封装,Qt是一套图形界面框架,能够帮助我们设计美观、功能强大的GUI界面。其中QMenuBar、QMenu、QAction则是Qt中关于菜单的三个常用组件。在PyQt5中,这三个组件也都可以轻易地实现。下面,我们将会详细介绍QMenuBar、QMenu和QAction的用法。
QMenuBar
QMenuBar是菜单栏,它是一个水平排列的菜单栏,通常被放置在窗口的顶部。代码示例:
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) # 创建一个子菜单
impAct = QAction('Import mail', self) # 创建一个动作
impMenu.addAction(impAct)
fileMenu.addMenu(impMenu) # 将子菜单添加到父菜单
newAct = QAction('New', self) # 创建一个动作
fileMenu.addAction(newAct) # 将动作添加到父菜单
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Menubar')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
首先,我们通过调用menuBar()
方法创建了一个菜单栏实例。然后,我们调用addMenu()
方法创建一个父菜单,并将其添加到菜单栏中。接着,我们使用QMenu()
方法创建一个子菜单,这个子菜单是属于父菜单下的,并在子菜单中添加了一个动作。最终,我们将子菜单添加到父菜单中,最后将动作添加到父菜单下的动作列表中。
QMenu
QMenu是菜单,它是一个弹出菜单窗口,通常被绑定到鼠标右键或者某个其他的快捷键上。示例代码:
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)
impAct = QAction('Import mail', self)
impMenu.addAction(impAct)
newAct = QAction('New', self)
fileMenu.addAction(newAct)
fileMenu.addMenu(impMenu) # 以子菜单的形式添加
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_())
在这里,我们创建了一个父菜单,然后使用QMenu()
实例化一个子菜单,利用addMenu()
方法,将子菜单添加到父菜单中,最终使用QAction()
创建了两个动作,然后将它们添加到父菜单下面的动作列表中。在后面的contextMenuEvent
中,我们在鼠标右击时会弹出一个菜单界面,其中包括了三个动作。当我们在这个菜单中选择了某个动作时,会触发该动作所绑定的事件。
以上是QMenuBar、QMenu、QAction在PyQt5中的完整使用攻略,更多方法和使用说明请查看官方文档。