我的应用程序需要动态显示或隐藏系统托盘。但是一旦我在其上调用
.hide()
函数,然后在其上调用 .show()
,它就不会显示。与 .setVisible(...)
相同的行为。
我创建了一个最小的可重现代码来显示
QSystemTrayIcon
PySide6 类发生了什么问题。
import os
import sys
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
import resources_rc
app = QApplication(sys.argv)
# Image
def _image(name: str):
return os.path.join(':', 'saved_files', 'images', f'{name}.png')
# Setup system tray
tray = QSystemTrayIcon(QIcon(_image('folder')))
tray.show()
print('> Running\n')
def toggle_tray():
tray.setVisible(not tray.isVisible())
# tray.setIcon(QIcon(_image('folder'))) # WORKAROUND (read below)
print(f'[State Toggled] Tray Visible = {tray.isVisible()}')
# Timer to show/hide the tray icon
timer = QTimer()
timer.timeout.connect(toggle_tray)
timer.start(3000)
app.exec()
它应该显示系统托盘图标,然后 3 秒后隐藏。然后3秒后,显示。然后3秒后,隐藏。循环继续。
它在开始时完美显示(应该如此),然后 3 秒后它隐藏(应该如此),但是 在接下来的 3 秒后,它不会显示 (因为它)应该有).
tray.setIcon(QIcon(_image('folder')))
或 .hide()
隐藏托盘图标后,使用 .setVisible(False)
再次设置系统托盘 的图标。
.hide()
或
.setVisible(False)
正在从
QSystemTrayIcon()
中删除图标还是其他原因?也许这是一个错误?我真的需要你在这方面的帮助。