2011-09-07 8 views
3

내 응용 프로그램의 시스템 트레이에 아이콘을 구현하려고하는데 두 가지 문제가 있습니다.wxPython 시스템 트레이 아이콘

첫째, 사용중인 아이콘이 투명 배경이있는 .png이지만 아이콘의 배경이 못 생깁니다.

둘째, Icon에는 "Show"및 "Close"옵션이있는 마우스 오른쪽 버튼 메뉴가 있습니다. 그러나 알 수없는 이유로 둘 다 옆에 "Ctrl - Q"라고 말합니다. 내가 이것을 지정하지 않았을뿐만 아니라 단축키 조합은 아무 것도하지 않습니다.

다음은 현재 사용중인 코드입니다. 그것은 거의 직접 문서에서 해제 것 :

self.trayicon = SysTray(self, wx.Icon(TRAY_ICON, wx.BITMAP_TYPE_PNG), TRAY_TOOLTIP) 
    self.trayicon.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT) 
    self.trayicon.Bind(wx.EVT_MENU, self.OnShow, id=wx.ID_OPEN) 
+0

PNG에서 XPM 파일로 전환하면 투명성 문제가 해결되었습니다. 그러나 나는 여전히 CTRL-Q를보고 있는데, 이는 내 데스크톱 환경 때문일 수 있습니다. 나는 현재 Arch와 Gentoo 모두에서 LXDE를 실행하여 그것을 테스트했다. 나는 VM을 시작하고 다른 환경에서 시도 할 것이다. –

+2

아마도 wx.ID_OPEN 및 wx.ID_EXIT이지만 Ctrl + O와 Ctrl + Q를 기대할 것입니다. – Fenikso

답변

0

의 wxPython은 "단축키"또는 당신이 좋아하는 것 "바로 가기"또는 무엇이든을 추적하는 AcceleratorTable이라는 것을 사용합니다

class SysTray(wx.TaskBarIcon): 

def __init__(self, parent, icon, text): 
    wx.TaskBarIcon.__init__(self) 
    self.parentApp = parent 
    self.SetIcon(icon, text) 
    self.CreateMenu() 

def CreateMenu(self): 
    self.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.ShowMenu) 
    self.menu=wx.Menu() 
    self.menu.Append(wx.ID_OPEN, "Show") 
    self.menu.Append(wx.ID_EXIT, "Close") 

def ShowMenu(self,event): 
    self.PopupMenu(self.menu) 

사용하여 구현된다 그들에게 전화하기. sizer를 정의하고 설정할 수있는 것과 마찬가지로 AcceleratorTable을 정의하고 설정할 수 있으며 wxPython이이를 사용할 것입니다. 이것에 대한 자세한 내용 http://www.blog.pythonlibrary.org/2010/12/02/wxpython-keyboard-shortcuts-accelerators/

또한 Ctrl-Q 또는 Ctrl-O 단축키를 얻으려면 텍스트에서 지정하거나 단축키 테이블에 추가해야합니다. 제대로 포맷 된 텍스트를 메뉴 항목에 추가하면 wxPython은 "this is a hotkey"를 인식하고이를 가속기 테이블에 자동으로 추가합니다.

self.menu.Append(wx.ID_OPEN, "Show\tCtrl+O") 
self.menu.Append(wx.ID_EXIT, "Close\tCtrl+Q") 
관련 문제