首页 新闻 会员 周边 捐助

系统托盘的菜单显示位置问题

0
[待解决问题]

我基于pyside2 和 qfluentwidgets写了一个python程序,其中包含了一个系统托盘,但是我遇到了一些问题,我的系统托盘的菜单总是显示在最下方,导致无法完整显示下面是效果和代码
"""
import sys

from PySide2 import QtCore
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QSystemTrayIcon, QApplication, QAction
from qfluentwidgets import SplitFluentWindow, RoundMenu
import resource.app_icon

class MainWindow(SplitFluentWindow):

def __init__(self):
    super().__init__()
    self.sysTray = QSystemTrayIcon()
    self.icon = QIcon(":/icon.ico")
    self.sysTray.setIcon(self.icon)
    self.trayIconMenu = RoundMenu()
    self.trayIconMenu.addAction(QAction("主界面"))
    self.trayIconMenu.addSeparator()
    self.trayIconMenu.addAction(QAction("设备"))
    self.trayIconMenu.addAction(QAction("状态"))
    self.trayIconMenu.addAction(QAction("任务"))
    self.trayIconMenu.addSeparator()
    self.trayIconMenu.addAction(QAction("重启"))
    self.trayIconMenu.addAction(QAction("退出"))
    self.sysTray.setContextMenu(self.trayIconMenu)
    # 创建主窗口
    self.sysTray.show()

if name == 'main':
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) # 设置qt界面大小与原设计界面比例相同
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())

"""


南鸢2000的主页 南鸢2000 | 菜鸟二级 | 园豆:202
提问于:2024-07-07 18:40
< >
分享
所有回答(2)
0

用SystemTrayMenu不要用RoundMenu,SystemTrayMenu是专门给托盘用的,会自动调节位置

www378660084 | 园豆:1141 (小虾三级) | 2024-07-08 11:01

是的,的确如此,非常感谢,在此之前,我在api和代码中没有注意到这个方法,感谢提醒

支持(0) 反对(0) 南鸢2000 | 园豆:202 (菜鸟二级) | 2024-07-08 11:08
0

来自AI的回答:
根据您提供的代码,我注意到您在构建系统托盘菜单时使用了RoundMenu。可能是因为RoundMenu的实现方式导致菜单显示在最下方。
建议尝试以下方法追踪问题和解决问题:

  1. 确保您的应用程序和屏幕分辨率适配正常。您可以尝试删除以下这行代码:QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling),然后再次运行程序检查显示是否正常。
  2. 尝试不使用RoundMenu,直接使用QMenu或其他标准的菜单类来构建托盘菜单。例如,您可以使用QMenu()代替RoundMenu()。这可能会产生不同的外观,但可以帮助您确定问题是否与RoundMenu相关。
    如果以上解决方法都无效,请考虑查阅qfluentwidgetsPySide2的官方文档,或者在相关的开发社区寻求帮助。这样有经验的开发人员可以更好地帮助您解决问题。希望这些建议对您有所帮助!
Technologyforgood | 园豆:7541 (大侠五级) | 2024-07-09 16:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册