【问题标题】:Python where to put while loop wx.python systrayPython 在哪里放置 while 循环 wx.python 系统托盘
【发布时间】:2015-02-13 16:34:25
【问题描述】:

我在确定将 while 循环放置在哪里时遇到了问题

  1. 多个系统托盘图标和实例正在运行
  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()

【问题讨论】:

    标签: python loops while-loop wxpython


    【解决方案1】:

    如果我完全删除函数循环,它就可以工作。

    我不明白你想用循环做什么,但你肯定做错了。

    【讨论】: