2015-02-13 5 views
1

У меня возникла проблема с определением, где положить цикл while. Я переместил эту вещь в несколько раз из проблем, с которыми сталкиваюсь.Python, где поставить петлю wx.python systray

  1. несколько Systray значков и экземпляры, работающих
  2. не может потянуть вверх меню в системном лотке, нет выхода функции
  3. нет значка, если я не позволяю MainLoop выполнить и т.д.

import wx 
 
import time 
 

 
TRAY_TOOLTIP = 'Connector Error Discovery' 
 
TRAY_ICON = 'image.jpg' 
 

 
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(TRAY_ICON) 
 
    self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.on_left_down) 
 

 
    def CreatePopupMenu(self): 
 
    menu = wx.Menu() 
 
    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_left_down(self, event): 
 
    print 'Tray icon was left-clicked.' 
 

 
    def on_exit(self, event): 
 
    wx.CallAfter(self.Destroy) 
 

 
def looping(): 
 
    while 1: 
 
    time.sleep(5) 
 
    print 'hi' 
 

 
def main(): 
 
    app = wx.PySimpleApp() 
 
    TaskBarIcon() 
 
    app.MainLoop(looping()) 
 

 
if __name__ == '__main__': 
 
    main()

ответ

0

Если я полностью удалю функцию петли, оно работает.

Я не понимаю, что вы пытаетесь сделать с циклом, но вы, конечно, делаете это неправильно.

Смежные вопросы