wxpython如何设置图标_wxPython:如何使任务栏图标响应左键点击

使用wxPython,我创建了一个任务栏图标和菜单。 右键单击该图标后,一切正常(至少在Windows中):即显示菜单,并在您单击其他位置(如Windows的任务栏上)时自动隐藏。wxPython:如何使任务栏图标响应左键点击

现在我确实想让菜单出现在图标被左键单击时。 所以我插入Bind()到左单击框类包装,调用任务栏图标的CreatePopupMenu():

import wx

class BibTaskBarIcon(wx.TaskBarIcon):

def __init__(self, frame):

wx.TaskBarIcon.__init__(self)

self.frame = frame

icon = wx.Icon('test_icon.ico', wx.BITMAP_TYPE_ICO)

self.SetIcon(icon, "title")

def CreatePopupMenu(self):

self.menu = wx.Menu()

self.menu.Append(wx.NewId(), "dummy menu ")

self.menu.Append(wx.NewId(), "dummy menu 2")

return self.menu

class TaskBarFrame(wx.Frame):

def __init__(self, parent, title):

wx.Frame.__init__(self, parent, style=wx.FRAME_NO_TASKBAR)

...

self.tbicon = BibTaskBarIcon(self)

wx.EVT_TASKBAR_LEFT_UP(self.tbicon, self.OnTaskBarLeftClick)

...

def OnTaskBarLeftClick(self, evt):

self.PopupMenu(self.tbicon.CreatePopupMenu())

...

def main(argv=None):

app = wx.App(False)

TaskBarFrame(None, "testing frame")

app.MainLoop()

这工作得很好,除了是当您单击菜单不会自动消失屏幕上的其他位置。实际上,图标上多次左键单击会创建多个菜单。隐藏菜单的唯一方法是点击其中一个项目(您并不总是想要)。我查看了TaskbarIcon的可用方法,但是我没有清楚要使用哪一个来隐藏菜单(.Destroy()不起作用)。此外,我不知道要绑定到哪个事件(有一个EVT_SET_FOCUS,但我找不到任何EVT_LOOSE_FOCUS或类似)。

那么,如何在失去焦点时隐藏菜单?

编辑:我插入更多的代码,以使其更清晰

+0

你能告诉什么是BibTaskBarIcon吗?如果您可以提供可以在复制粘贴上运行并显示问题的简单代码,那将会更好。 –

2010-07-14 04:34:57

+0

我已经扩展了代码。现在它是复制粘贴准备好的,除了图标文件 –

2010-07-14 07:04:40

+0

猜猜你正在使用Windows,因为点击其他地方,即使在图标关闭菜单。 (ubuntu) –

2010-07-14 16:58:30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值