使用Python上的系统托盘执行“ While”循环时遇到的问题

问题描述 投票:0回答:1

我正在尝试创建每X秒运行一次代码块的应用程序,该应用程序的系统任务栏图标只有“ Quit”选项。但是问题在于,当它进入任务栏功能时,它不会读取下一行代码,因此,无法启动“ While”循环。还有其他方法吗?

import time
import os
import sys
from PySide2 import QtWidgets, QtGui

class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
    def __init__(self, icon, parent=None):
        QtWidgets.QSystemTrayIcon.__init__(self, icon, parent)
        self.setToolTip(f'Wallpy')
        menu = QtWidgets.QMenu(parent)

        exit_ = menu.addAction("Exit")
        exit_.triggered.connect(lambda: sys.exit())

        menu.addSeparator()
        self.setContextMenu(menu)


def tray():
    app = QtWidgets.QApplication(sys.argv)
    w = QtWidgets.QWidget()
    tray_icon = SystemTrayIcon(QtGui.QIcon("tray.ico"), w)
    tray_icon.show()
    app.exec_()


def loop_function():
    print("Nice") # anything executable


tray() # launch tray icon


while True:
    loop_function() # executing every minute
    time.sleep(60)
python pyside2 system-tray
1个回答
0
投票

这是因为,当您使用tray()时,您的主应用程序启动并且GUI主循环启动。它一直运行到您的应用程序退出,然后执行while loop

© www.soinside.com 2019 - 2024. All rights reserved.