wxPython系统托盘图纸

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.

我有一个关于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.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_是否正在运行,以查看它是否已完成。。。