请帮我用pyside2写一个悬浮菜单
时间: 2023-08-28 10:27:33 浏览: 102
下面是一个使用 PySide2 实现悬浮菜单的示例代码:
```python
from PySide2.QtWidgets import QApplication, QMenu, QAction, QSystemTrayIcon
from PySide2.QtGui import QIcon
from PySide2.QtCore import QObject, Signal, QPoint
class FloatingMenu(QObject):
def __init__(self):
QObject.__init__(self)
self.create_menu()
self.tray_icon = QSystemTrayIcon(self)
self.tray_icon.setIcon(QIcon("icon.png"))
self.tray_icon.setContextMenu(self.menu)
self.tray_icon.show()
def create_menu(self):
self.menu = QMenu()
self.action1 = QAction("Action 1", self)
self.action1.triggered.connect(self.on_action1_triggered)
self.menu.addAction(self.action1)
self.action2 = QAction("Action 2", self)
self.action2.triggered.connect(self.on_action2_triggered)
self.menu.addAction(self.action2)
def on_action1_triggered(self):
print("Action 1 triggered")
def on_action2_triggered(self):
print("Action 2 triggered")
def show_menu(self, point):
self.menu.popup(point)
app = QApplication([])
floating_menu = FloatingMenu()
# Show the menu when the tray icon is clicked
floating_menu.tray_icon.activated.connect(lambda reason: floating_menu.show_menu(QCursor.pos()))
app.exec_()
```
在这个示例代码中,我们创建了一个 `FloatingMenu` 类来管理悬浮菜单。在 `__init__` 方法中,我们创建了一个 `QMenu` 对象,并将两个 `QAction` 对象添加到菜单中。在 `create_menu` 方法中,我们还创建了一个 `QSystemTrayIcon` 对象,并将菜单设置为系统托盘图标的上下文菜单。
在 `show_menu` 方法中,我们使用 `popup` 方法显示菜单,并将菜单显示的位置设置为传入的 `point` 参数。
最后,我们在应用程序中创建了一个 `QApplication` 对象,并将 `FloatingMenu` 对象实例化。当系统托盘图标被点击时,我们连接 `activated` 信号并显示菜单。
注意,这个示例代码中使用了一个名为 `icon.png` 的图标文件,你需要将这个文件替换为你自己的图标文件。
阅读全文