wxPython系统托盘图纸
我有一个关于wxPython和系统托盘的小问题。 嗯,我使用的是系统托盘,我想让它在系统托盘绘制完成后立即调用函数,但是EVT_PAINT对我来说似乎对托盘没有任何影响。 无论如何,这是我的代码:wxPython系统托盘图纸,python,wxpython,system-tray,Python,Wxpython,System Tray,我有一个关于wxPython和系统托盘的小问题。 嗯,我使用的是系统托盘,我想让它在系统托盘绘制完成后立即调用函数,但是EVT_PAINT对我来说似乎对托盘没有任何影响。 无论如何,这是我的代码: #!/usr/bin/python2 import wxversion wxversion.select('2.8') import pynotify,subprocess,wx,os,json #config TRAY_TOOLTIP = 'Backups' PROG_DIR = os.path.
#!/usr/bin/python2
import wxversion
wxversion.select('2.8')
import pynotify,subprocess,wx,os,json
#config
TRAY_TOOLTIP = 'Backups'
PROG_DIR = os.path.dirname(os.path.realpath(__file__))
class Config:
def __init__(self):
self.readFile()
def readFile(self):
jsons = ''
searchingJson = True
f = open(PROG_DIR+'/config.json')
lines = f.readlines()
f.close()
self.json = json.loads(lines)
pynotify.init("Backups")
def backup():
sysTray.set_icon(PROG_DIR+'/loading.png')
pynotify.Notification("Backups","Starting Backup",PROG_DIR+'/backup.png').show()
if subprocess.call(["rsync","-a",config.json['backup_dir'],"--exclude",".*",config.json['remote_dir']]):
pynotify.Notification("Backups","Backup Failed",PROG_DIR+'/backup.png').show()
else:
pynotify.Notification("Backups","Backup complete!",PROG_DIR+'/backup.png').show()
sysTray.set_icon(PROG_DIR+'/backup.png')
def create_menu_item(menu,label,func):
item = wx.MenuItem(menu,-1,label)
menu.Bind(wx.EVT_MENU,func,id=item.GetId())
menu.AppendItem(item)
return item
class TaskBarIcon(wx.TaskBarIcon):
def __init__(self):
super(TaskBarIcon,self).__init__()
self.set_icon(PROG_DIR+'/backup.png')
self.Bind(wx.EVT_PAINT,self.initial_backup)
def CreatePopupMenu(self):
menu = wx.Menu()
create_menu_item(menu,'Start Backup',self.on_backup)
menu.AppendSeparator()
create_menu_item(menu,'Exit',self.on_exit)
return menu
def set_icon(self,path):
icon = wx.IconFromBitmap(wx.Bitmap(path))
self.SetIcon(icon,TRAY_TOOLTIP)
def on_exit(self,event):
wx.CallAfter(self.Destroy)
def on_backup(self,event):
backup()
def initial_backup(self,event):
print 'test'
def main():
app = wx.App(False)
sysTray = TaskBarIcon()
app.MainLoop()
if __name__ == '__main__':
main()
没有任何内容被打印到终端。
谢谢你的帮助 你到底想做什么。。。。您可以在这里看到它不是从wxWindow继承的。。。因此没有EVT_画图…正如您可能注意到的,这是我正在制作的一些备份软件,我想让它在启动后立即自动运行备份。我只想在您的on init中生成一个线程来执行此操作。。。您可以轮询thread.is_是否正在运行,以查看它是否已完成。。。