有没有一种方法可以在点击时重新加载python rumps脚本?

时间:2020-04-10 11:29:32

标签: python py2app

我是python的新手,我正在构建一个简单的时区应用程序,其中有朗姆酒,使其成为状态栏应用程序和py2app,用于打包,其中我显示了几个不同的时区,并希望使用刷新按钮来重新加载时间显示。

我已阅读有关使用

import importlib

重新加载模块,但我不清楚如何在rumps库中使用此方法。

这是我当前的脚本:

import rumps
import datetime
import pytz
import os 
import sys
import importlib

class TimeZone(object):
    def __init__(self):
        super(TimeZone, self)
        self.config = {
            "app_name": "TimeZone",
            "ld_current_time" : "London " +  datetime.datetime.now(pytz.timezone('Europe/London')).strftime('%I:%M %p'),
            "ny_current_time" : "New York " + datetime.datetime.now(pytz.timezone('US/Eastern')).strftime('%I:%M %p') ,
            "la_current_time" : "Los Angeles " + datetime.datetime.now(pytz.timezone('US/Pacific')).strftime('%I:%M %p'),
         }
        self.app = rumps.App(self.config["app_name"])
        self.ld = rumps.MenuItem(title=self.config["ld_current_time"],callback='')
        self.ny = rumps.MenuItem(title=self.config["ny_current_time"],callback='')
        self.la = rumps.MenuItem(title=self.config["la_current_time"],callback='')
        self.set_up_menu()


    def set_up_menu(self):
        self.app.title = "⏳"
        self.app.menu = [self.ld,self.ny,self.la]


    @rumps.clicked('Refresh')
    def refresh(self):
        print('refresh')
        rumps.MenuItem.update(self.app.menu,1)
        #self.menu.update = [self.ld,self.ny,None,self.la,None]


    def run(self):
        self.app.run()

if __name__ == '__main__':
    app = TimeZone()
    app.run()

任何输入将不胜感激。干杯!

1 个答案:

答案 0 :(得分:0)

我通过使用内置的os和sys python模块解决了这个问题:

        @rumps.clicked('restart')
        def restart(self):
            print('restarted')
            os.execl(sys.executable, sys.executable, * sys.argv)