pyqt menuBar实现鼠标在菜单栏移动时,切换不同的工具栏,给出代码
时间: 2024-02-25 12:54:36 浏览: 66
可以使用 `QMenuBar` 的 `hovered` 信号来实现鼠标在菜单栏移动时切换工具栏。具体实现代码如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuBar, QToolBar, QAction
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 创建菜单栏
menuBar = self.menuBar()
# 创建工具栏
toolBar1 = QToolBar('Tool Bar 1', self)
self.addToolBar(toolBar1)
toolBar2 = QToolBar('Tool Bar 2', self)
self.addToolBar(toolBar2)
# 添加菜单和动作
fileMenu = menuBar.addMenu('File')
fileMenu.addAction('New')
fileMenu.addAction('Open')
fileMenu.addAction('Save')
editMenu = menuBar.addMenu('Edit')
editMenu.addAction('Cut')
editMenu.addAction('Copy')
editMenu.addAction('Paste')
# 监听菜单栏 hovered 信号
menuBar.hovered.connect(self.on_menu_bar_hovered)
def on_menu_bar_hovered(self, action):
# 根据鼠标所在的菜单项切换工具栏
if action.text() == 'File':
self.toolBarArea(self.toolBarArea(self.toolBarWidgets()[0]))
elif action.text() == 'Edit':
self.toolBarArea(self.toolBarArea(self.toolBarWidgets()[1]))
if __name__ == '__main__':
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()
```
在这个例子中,我们创建了两个工具栏 `toolBar1` 和 `toolBar2`,并将它们添加到了主窗口中。然后,我们创建了一个菜单栏 `menuBar`,并添加了两个菜单 `File` 和 `Edit`,每个菜单中都包含了三个动作。最后,我们监听了菜单栏的 `hovered` 信号,并在回调函数 `on_menu_bar_hovered` 中根据鼠标所在的菜单项切换工具栏。
阅读全文