有没有办法在点击时重新加载 python rumps 脚本?
Is there a way to reload a python rumps script on click?
我是 python 的新手,我正在构建一个带有 rumps 的简单时区应用程序,使其成为状态栏应用程序和用于打包的 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()
如有任何意见,我们将不胜感激。干杯!
我使用内置 os 和 sys python 模块解决了这个问题:
@rumps.clicked('restart')
def restart(self):
print('restarted')
os.execl(sys.executable, sys.executable, * sys.argv)
我是 python 的新手,我正在构建一个带有 rumps 的简单时区应用程序,使其成为状态栏应用程序和用于打包的 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()
如有任何意见,我们将不胜感激。干杯!
我使用内置 os 和 sys python 模块解决了这个问题:
@rumps.clicked('restart')
def restart(self):
print('restarted')
os.execl(sys.executable, sys.executable, * sys.argv)