本文主要是介绍PyQt5菜单与工具栏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 主菜单
- 2. 子菜单
- 3. 勾选菜单
- 4. 右键菜单
- 5. 工具栏
1. 主菜单
PyQt5是一个强大的Python库,用于创建图形用户界面(GUI)。其中,菜单栏是GUI应用程序中常见的一部分,允许用户通过点击来执行各种操作。下面是一个简单的PyQt5菜单栏示例,
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QActionclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self): # 初始化UIself.statusBar().showMessage('Ready') # 状态栏显示消息menubar = self.menuBar() # 创建菜单栏fileMenu = menubar.addMenu('File') # 添加一个名为"File"的菜单# 创建一个名为"Exit"的动作,连接到一个名为"triggered"的信号exitAction = QAction('Exit', self) exitAction.setShortcut('Ctrl+Q') # 设置快捷键exitAction.setStatusTip('Exit application') # 设置提示信息exitAction.triggered.connect(self.close) # 将动作与关闭窗口函数连接fileMenu.addAction(exitAction) # 将"Exit"动作添加到"File"菜单中self.setGeometry(300, 300, 300, 200) # 设置窗口位置和大小self.setWindowTitle('Menu Bar Example') # 设置窗口标题self.show() # 显示窗口if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
这段代码创建了一个简单的窗口应用程序,其中包含一个菜单栏,其中
import sys
: 导入sys模块,用于与Python解释器进行交互。from PyQt5.QtWidgets import QApplication, QMainWindow, QAction
: 从PyQt5.QtWidgets模块中导入QApplication(应用程序类)、QMainWindow(主窗口类)和QAction(动作类)。class Example(QMainWindow):
: 创建一个名为Example的类,继承自QMainWindow类。def __init__(self):
: Example类的构造函数。super().__init__()
: 调用父类(QMainWindow)的构造函数。self.initUI()
: 调用自定义的initUI()方法。def initUI(self):
: 自定义的方法,用于初始化用户界面。self.statusBar().showMessage('Ready')
: 在窗口底部创建状态栏,并显示消息"Ready"。menubar = self.menuBar()
: 创建菜单栏。fileMenu = menubar.addMenu('File')
: 添加一个名为"File"的菜单。exitAction = QAction('Exit', self)
: 创建一个名为"Exit"的动作,并将其与当前窗口关联。exitAction.setShortcut('Ctrl+Q')
: 设置动作的快捷键为Ctrl+Q。exitAction.setStatusTip('Exit application')
: 设置动作的提示信息为"Exit application"。exitAction.triggered.connect(self.close)
: 将动作的"triggered"信号连接到当前窗口的关闭函数。fileMenu.addAction(exitAction)
: 将"Exit"动作添加到"File"菜单中。self.setGeometry(300, 300, 300, 200)
: 设置窗口的位置和大小。self.setWindowTitle('Menu Bar Example')
: 设置窗口标题为"Menu Bar Example"。self.show()
: 显示窗口。if __name__ == '__main__':
: Python中的惯用法,检查当前脚本是否作为主程序运行。app = QApplication(sys.argv)
: 创建应用程序对象。ex = Example()
: 创建Example类的实例。sys.exit(app.exec_())
: 运行应用程序的主事件循环,并确保在退出时清理系统资源。
运行结果如下
2. 子菜单
子菜单是菜单栏中的二级菜单,允许在主菜单下创建更多的选项。下面是一个包含子菜单的PyQt5示例,
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenuclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self): # 初始化UIself.statusBar().showMessage('Ready') # 状态栏显示消息menubar = self.menuBar() # 创建菜单栏fileMenu = menubar.addMenu('File') # 添加一个名为"File"的菜单# 创建一个名为"New"的动作newAction = QAction('New', self) newAction.setStatusTip('New File') # 设置提示信息fileMenu.addAction(newAction) # 将"New"动作添加到"File"菜单中# 创建一个名为"Edit"的子菜单editMenu = QMenu('Edit', self) # 创建子菜单中的动作copyAction = QAction('Copy', self)pasteAction = QAction('Paste', self)# 将动作添加到子菜单中editMenu.addAction(copyAction)editMenu.addAction(pasteAction)# 将子菜单添加到菜单栏中menubar.addMenu(editMenu)self.setGeometry(300, 300, 300, 200) # 设置窗口位置和大小self.setWindowTitle('Submenu Example') # 设置窗口标题self.show() # 显示窗口if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
这段代码创建了一个包含子菜单的简单窗口应用程序。让我逐行解释:
fileMenu = menubar.addMenu('File')
: 添加一个名为"File"的菜单。newAction = QAction('New', self)
: 创建一个名为"New"的动作,并将其与当前窗口关联。newAction.setStatusTip('New File')
: 设置动作的提示信息为"New File"。fileMenu.addAction(newAction)
: 将"New"动作添加到"File"菜单中。editMenu = QMenu('Edit', self)
: 创建一个名为"Edit"的子菜单,并将其与当前窗口关联。copyAction = QAction('Copy', self)
: 创建一个名为"Copy"的动作,并将其与当前窗口关联。pasteAction = QAction('Paste', self)
: 创建一个名为"Paste"的动作,并将其与当前窗口关联。editMenu.addAction(copyAction)
: 将"Copy"动作添加到子菜单中。editMenu.addAction(pasteAction)
: 将"Paste"动作添加到子菜单中。menubar.addMenu(editMenu)
: 将子菜单添加到菜单栏中。
运行结果如下
3. 勾选菜单
勾选菜单通常用于表示某个选项的状态,比如启用或禁用、选中或未选中等。在PyQt5中,可以使用QAction类的setCheckable(True)
方法将动作设置为可勾选状态。下面是一个包含勾选菜单的PyQt5示例,
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenuclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self): # 初始化UIself.statusBar().showMessage('Ready') # 状态栏显示消息menubar = self.menuBar() # 创建菜单栏viewMenu = menubar.addMenu('View') # 添加一个名为"View"的菜单# 创建一个名为"Show Status Bar"的动作,并设置为可勾选状态showStatusBarAction = QAction('Show Status Bar', self, checkable=True) showStatusBarAction.setChecked(True) # 初始设置为勾选状态showStatusBarAction.setStatusTip('Show/Hide Status Bar') # 设置提示信息# 将动作添加到"View"菜单中viewMenu.addAction(showStatusBarAction)# 将动作的状态切换与自定义的函数相连showStatusBarAction.triggered.connect(self.toggleStatusBar)self.setGeometry(300, 300, 300, 200) # 设置窗口位置和大小self.setWindowTitle('Checkable Menu Example') # 设置窗口标题self.show() # 显示窗口def toggleStatusBar(self, state): # 定义一个函数用于切换状态栏的显示与隐藏if state:self.statusBar().show()else:self.statusBar().hide()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
这段代码创建了一个具有勾选菜单的简单窗口应用程序,其中
viewMenu = menubar.addMenu('View')
: 添加一个名为"View"的菜单。showStatusBarAction = QAction('Show Status Bar', self, checkable=True)
: 创建一个名为"Show Status Bar"的动作,并将其与当前窗口关联,设置为可勾选状态。showStatusBarAction.setChecked(True)
: 初始设置为勾选状态。showStatusBarAction.setStatusTip('Show/Hide Status Bar')
: 设置动作的提示信息为"Show/Hide Status Bar"。viewMenu.addAction(showStatusBarAction)
: 将"Show Status Bar"动作添加到"View"菜单中。showStatusBarAction.triggered.connect(self.toggleStatusBar)
: 将动作的"triggered"信号连接到自定义的toggleStatusBar函数。def toggleStatusBar(self, state):
: 自定义的函数,用于切换状态栏的显示与隐藏,接受一个状态参数。if state:
: 检查状态参数是否为真(勾选)。self.statusBar().show()
: 如果状态为真,显示状态栏。else:
: 如果状态为假(未勾选)。self.statusBar().hide()
: 隐藏状态栏。
运行结果如下
4. 右键菜单
右键菜单是当用户在应用程序中右键单击时出现的上下文菜单,通常用于提供与当前上下文相关的操作选项。在PyQt5中,可以使用QMenu类创建右键菜单。下面是一个包含右键菜单的PyQt5示例,
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self): # 初始化UIself.statusBar().showMessage('Ready') # 状态栏显示消息self.setGeometry(300, 300, 300, 200) # 设置窗口位置和大小self.setWindowTitle('Right-click Menu Example') # 设置窗口标题self.show() # 显示窗口def contextMenuEvent(self, event): # 重写contextMenuEvent方法以响应右键单击事件contextMenu = QMenu(self) # 创建右键菜单newAct = contextMenu.addAction('New') # 添加一个动作到右键菜单中openAct = contextMenu.addAction('Open') # 添加一个动作到右键菜单中quitAct = contextMenu.addAction('Quit') # 添加一个动作到右键菜单中,表示退出应用程序action = contextMenu.exec_(self.mapToGlobal(event.pos())) # 显示右键菜单并获取用户的动作选择if action == quitAct: # 如果用户选择了退出动作QApplication.instance().quit() # 退出应用程序if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
这段代码创建了一个具有右键菜单的简单窗口应用程序,其中
def contextMenuEvent(self, event):
: 重写contextMenuEvent方法以响应右键单击事件。contextMenu = QMenu(self)
: 创建右键菜单。newAct = contextMenu.addAction('New')
: 向右键菜单中添加一个名为"New"的动作。openAct = contextMenu.addAction('Open')
: 向右键菜单中添加一个名为"Open"的动作。quitAct = contextMenu.addAction('Quit')
: 向右键菜单中添加一个名为"Quit"的动作,表示退出应用程序。action = contextMenu.exec_(self.mapToGlobal(event.pos()))
: 显示右键菜单并获取用户的动作选择,mapToGlobal(event.pos())
用于将事件的坐标转换为全局坐标。if action == quitAct:
: 检查用户选择的动作是否为退出动作。QApplication.instance().quit()
: 如果用户选择退出动作,则通过QApplication实例退出应用程序。
运行程序如下
5. 工具栏
工具栏是GUI应用程序中的常见部分,用于快速访问常用功能或命令。在PyQt5中,可以使用QToolBar类创建工具栏,并向其添加工具按钮、分隔符等。下面是一个包含工具栏的PyQt5示例,
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QActionclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self): # 初始化UIself.statusBar().showMessage('Ready') # 状态栏显示消息self.toolbar = self.addToolBar('ToolBar') # 创建工具栏# 创建一个名为"New"的工具按钮newAction = QAction('New', self) newAction.setStatusTip('New File') # 设置提示信息# 创建一个名为"Open"的工具按钮openAction = QAction('Open', self) openAction.setStatusTip('Open File') # 设置提示信息# 创建一个名为"Save"的工具按钮saveAction = QAction('Save', self) saveAction.setStatusTip('Save File') # 设置提示信息# 向工具栏添加工具按钮self.toolbar.addAction(newAction)self.toolbar.addAction(openAction)self.toolbar.addAction(saveAction)self.setGeometry(300, 300, 300, 200) # 设置窗口位置和大小self.setWindowTitle('Tool Bar Example') # 设置窗口标题self.show() # 显示窗口if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
这段代码创建了一个简单的窗口应用程序,其中包含一个工具栏,其中
self.toolbar = self.addToolBar('ToolBar')
: 创建一个名为"ToolBar"的工具栏。newAction = QAction('New', self)
: 创建一个名为"New"的工具按钮,并将其与当前窗口关联。newAction.setStatusTip('New File')
: 设置工具按钮的提示信息为"New File"。openAction = QAction('Open', self)
: 创建一个名为"Open"的工具按钮,并将其与当前窗口关联。openAction.setStatusTip('Open File')
: 设置工具按钮的提示信息为"Open File"。saveAction = QAction('Save', self)
: 创建一个名为"Save"的工具按钮,并将其与当前窗口关联。saveAction.setStatusTip('Save File')
: 设置工具按钮的提示信息为"Save File"。self.toolbar.addAction(newAction)
: 向工具栏添加"New"工具按钮。self.toolbar.addAction(openAction)
: 向工具栏添加"Open"工具按钮。self.toolbar.addAction(saveAction)
: 向工具栏添加"Save"工具按钮。
运行程序结果如下
这篇关于PyQt5菜单与工具栏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!