PyQt5 工具栏添加图标,并绑定点击事件

Qt工具栏与按钮实现
本文详细介绍如何在Qt中创建工具栏及按钮,并实现按钮点击事件。通过设置图标、文字和样式,完成自定义工具栏的搭建,适用于软件界面设计与功能拓展。

自己最近做的软件需要一个工具栏,然后点击工具栏的图标需要进行一定的操作

  • 创建工具栏 toolBar
  • 主窗口添加工具栏 addToolBar
  • 创建工具按钮 refresf_button
  • 按钮添加图标与文字
  • 连接按钮点击事件
  • 工具栏添加按钮 toolBar.addWidget(refrefh_botton)
self.toolBar = QToolBar(MainWindow)
self.toolBar.setObjectName("toolBar")
self.toolBar.setContentsMargins(QMargins(20, 0, 20, 0))
MainWindow.addToolBar(Qt.TopToolBarArea, self.toolBar)
self.refresh_button = QPushButton()
self.refresh_button.setText('刷新')
refresh_icon = QIcon()
refresh_icon.addPixmap(QPixmap('../images/refresh.png'), QIcon.Normal, QIcon.Off)
self.refresh_button.setIcon(refresh_icon)
self.refresh_button.setIconSize(QSize(25, 25))
self.refresh_button.setStyleSheet(QSS.ButtonStyle)
self.refresh_button.clicked.connect(self.refresh_treewidget)
self.toolBar.addWidget(self.refresh_button)
<think>我们参考上述引用内容,来回答用户的问题:如何在PyQt5的QMainWindow中添加菜单栏、状态栏和工具栏。 根据引用,我们知道: 1. 菜单栏使用QMenuBar类,通常位于主窗口顶部。 2. 工具栏使用QToolBar类,可以拖动或停靠。 3. 状态栏使用QStatusBar类,位于主窗口底部。 步骤: 1. 菜单栏(QMenuBar): - 通过`menuBar()`方法获取主窗口的菜单栏(如果没有则创建一个)。 - 然后使用`addMenu`方法添加菜单(如“文件”菜单),再在菜单中添加动作(QAction)。 2. 工具栏(QToolBar): - 使用`addToolBar`方法创建工具栏。 - 然后使用`addAction`方法将动作添加工具栏。 3. 状态栏(QStatusBar): - 使用`statusBar()`方法获取主窗口的状态栏(如果没有则创建一个)。 - 使用`showMessage`方法显示临时消息,或添加永久部件。 注意:在Mac OS上,菜单栏可能显示在屏幕顶部,如果想使用应用程序内的菜单栏,可以设置`setNativeMenuBar(False)`。 下面是一个示例代码,演示如何添加菜单栏、工具栏和状态栏:</think>### PyQt5 QMainWindow 添加菜单栏、状态栏和工具栏PyQt5 中,`QMainWindow` 提供了标准应用程序框架的组件支持。以下是添加三要素的完整方法: #### 1. 添加菜单栏 (QMenuBar) ```python # 获取主窗口菜单栏(不存在则自动创建) menubar = self.menuBar() # 创建顶级菜单 file_menu = menubar.addMenu('文件(&F)') # &F 表示Alt+F快捷键 # 创建菜单动作 exit_action = QAction(QIcon('exit.png'), '退出(&X)', self) exit_action.setShortcut('Ctrl+Q') # 设置快捷键 exit_action.setStatusTip('退出程序') # 状态栏提示 exit_action.triggered.connect(qApp.quit) # 绑定事件 # 添加动作到菜单 file_menu.addAction(exit_action) # 创建子菜单(可选) import_menu = QMenu('导入', self) import_action = QAction('从CSV', self) import_menu.addAction(import_action) file_menu.addMenu(import_menu) # 添加到父菜单 ``` [^1][^2][^5] #### 2. 添加工具栏 (QToolBar) ```python # 创建工具栏 toolbar = self.addToolBar('主工具栏') # 添加工具动作(可复用菜单栏的action) new_action = QAction(QIcon('new.png'), '新建', self) toolbar.addAction(new_action) # 添加分隔符 toolbar.addSeparator() # 添加自定义控件(如按钮) save_btn = QPushButton(QIcon('save.png'), '保存') save_btn.clicked.connect(self.save_file) toolbar.addWidget(save_btn) # 设置工具栏特性 toolbar.setMovable(True) # 允许拖动 toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) # 图标+文字 ``` [^3][^4] #### 3. 添加状态栏 (QStatusBar) ```python # 获取状态栏(不存在则自动创建) statusbar = self.statusBar() # 显示临时消息(5秒后消失) statusbar.showMessage('准备就绪', 5000) # 添加永久部件(右侧显示) self.file_size_label = QLabel('0 KB') statusbar.addPermanentWidget(self.file_size_label) # 添加进度条(动态更新) self.progress_bar = QProgressBar() statusbar.addWidget(self.progress_bar, 1) # 拉伸系数为1 ``` [^1][^3] #### 完整代码框架 ```python import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import Qt class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # 添加菜单栏 menubar = self.menuBar() file_menu = menubar.addMenu('文件(&F)') # ... 添加菜单动作 # 添加工具栏 toolbar = self.addToolBar('工具') # ... 添加工具动作 # 添加状态栏 statusbar = self.statusBar() statusbar.showMessage('程序已启动') # 窗口设置 self.setGeometry(300, 300, 800, 600) self.setWindowTitle('PyQt5主窗口示例') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = MainWindow() sys.exit(app.exec_()) ``` **关键要点**: 1. 菜单栏通过 `menuBar()` 获取,使用 `addMenu()` 创建层级菜单 2. 工具栏通过 `addToolBar()` 创建,支持添加动作和自定义控件 3. 状态栏通过 `statusBar()` 获取,支持临时消息和永久部件 4. 所有组件共享 `QAction` 实现功能复用 5. Mac系统需 `menubar.setNativeMenuBar(False)` 显示程序内菜单栏[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值