wxpython 系统托盘程序中出现的问题

写了个关于tbicon的程序。
有以下问题不能解决:
1、icon显示不正常。准确的说是不明白怎么对应:ico对应的是BITMAP_TYPE_ICO?gif对应的是BITMAP_TYPE_GIF?那 svg文件对应什么?png呢?那个BITMAP_TYPE_XBM和BITMAP_TYPE_XPM类型是怎么使用的?
2、程序不稳定。同样代码,在eclips调试的时候,大部分时间能正常显示,但有时候图标不能显示,能ps到进程。正常执行的时候,图标从未正常显示,或者是看不到,只能ps到进程;或者状态栏一下子拉到最长,怀疑是图片载入时发生问题。
3、我在tbicon上用右键点击绑定退出功能。调试环境能够正常退出,正常执行时,尽管不能显示图标,但是出现长条图片(也就是上个问题所描述的状态栏拉到最长的情况),这时用右键能让图标消失,但还是能ps到进程。
4、总觉得我的thread方法用的不太对。原来想在run()中直接写:wx.MessageBox("inofrmation")的,但是不成功,不知道为什么。只能重新定义一个基于wx.App的类,在run里面创建并调用。
另外,我用的python是2.4。本人写代码经验不多,发现可笑之处,敬请指教。以下附上源代码:
#!/usr/bin/python

import time
import MySQLdb
import wx
from threading import Thread

conn=MySQLdb.Connection('localhost','sysuser','sysuser','sysuser_db')
cur=conn.cursor()
cur.execute('delete from schedule where time<'+time.strftime("%Y%m%d%H%M"))


class TaskBarApp(wx.Frame):
    def __init__(self,parent,id,title):
       wx.Frame.__init__(self, parent, -1, title, size = (1,1),style=wx.FRAME_NO_TASKBAR|wx.NO_FULL_REPAINT_ON_RESIZE)

       self.tbicon = wx.TaskBarIcon()
       self.tbicon.SetIcon(wx.Icon('alarm.gif', wx.BITMAP_TYPE_GIF), '')

      
       wx.EVT_TASKBAR_RIGHT_UP(self.tbicon,self.OnTaskBarRightClick)
       self.Show(True)

#右键退出部分代码
    def OnTaskBarRightClick(self,event):

        self.tbicon.Destroy()
        self.Close(True)
        wx.GetApp().ProcessIdle()
        return True

  
   
class TimeCheck(Thread):
    def run(self):
        while True:
            cur.execute('select time from schedule order by time')
            row=cur.fetchone()
            settedtime=row[0]
            if time.strftime("%Y%m%d%H%M")==settedtime:
                cur.execute('select task from schedule where time='+settedtime)
                row=cur.fetchone()
                settedtask=row[0]
                cur.execute('delete from schedule where time='+settedtime)
                MesgApp().CallMsg(settedtask)
            else:
                cur.execute('select time from schedule order by time')
                settedtime=row[0]
                time.sleep(5)
               
class MesgApp(wx.App):
    def CallMsg(self,input):
        wx.MessageBox(input)               
      
class App(wx.App):
    def OnInit(self):
        frame=TaskBarApp(None, -1, '')
        frame.Center(wx.BOTH)
        frame.Show(False)
        
        timecheck=TimeCheck()
        timecheck.start()
        return True
   
def main():

    app = App(0)
    app.MainLoop()
   
   
if __name__ == '__main__':
    main()