【发布时间】:2019-09-16 17:18:37
【问题描述】:
我正在尝试在 wxpython 中创建一个仅使用 TaskBarIcon 而没有框架的应用程序。
关于这个here 有一个问题,但是那个例子对我不起作用;它只是没有错误地退出。
我在下面编写的代码是我正在使用的代码的简化版本:
import wx
class Systray_Icon(wx.TaskBarIcon):
def __init__(self):
icon = wx.Icon('yellow.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(icon, "Test")
self.Bind(wx.EVT_MENU, self.Destroy(), id=wx.ID_EXIT)
def CreatePopupMenu(self):
menu = wx.Menu()
menu.Append(wx.ID_EXIT, "Quit")
return menu
app = wx.App()
sysicon = Systray_Icon()
app.MainLoop()
我收到以下错误:
$ python2 systray.py
Traceback (most recent call last):
File "systray.py", line 15, in <module>
sysicon = TaskBarIcon()
File "systray.py", line 6, in __init__
self.SetIcon(icon, "Test")
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_windows.py", line 2841, in SetIcon
return _windows_.TaskBarIcon_SetIcon(*args, **kwargs)
TypeError: in method 'TaskBarIcon_SetIcon', expected argument 1 of type 'wxPyTaskBarIcon *'
所以,我的问题:
1: 为什么 SetIcon 不接受我的课程?我已经尝试将 SetIcon 调用移动到我链接的问题中的函数,但它仍然不起作用。我可以摆弄它,可能会得到一些工作,但我想知道它不起作用的原因。
2:我链接到的问题运行,但立即退出。那是因为 TaskBarIcon 不会保持 MainLoop() 打开吗?我该怎么办?
【问题讨论】:
-
我知道如何让 TaskBarIcon 保持 MainLoop() 现在打开:请参阅 stackoverflow.com/questions/13069452/… 。还是不知道图标是怎么回事。
-
您是正确的,因为 TaskBarIcon 并不是真正的顶级窗口,因此它不会保持 MainLoop 运行。我看到你已经添加了一个框架,这是要走的路。