2017-09-02 1 views
0

Ich bin neu in Python und mit wxPython ein Tool zu erstellen, das minimiert werden kann, um System Tray-Symbol und kann wiederhergestellt werden, wenn Links geklickt. ich in Python 3. folgenden Code habe, während Online-Suche fand ich, dass ich den Schlüssel wie folgenden Ausschnitt binden kann:Wie bindet man die EVT_TASKBAR_LEFT_DOWN in wxPyton für TaskBarIcon Klasse

self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.OnTaskBarLeftClick)

Jedoch wird dieser Fehler verursacht, dass wx doesn't have this attribute sagen.

Ich möchte das Hauptfenster wiederherstellen, wenn auf das Taskleistensymbol geklickt wird, während Rechtsklick ein Popup-Menü erstellt.

import wx 
import wx.adv 


class SysTrayMenu(wx.adv.TaskBarIcon): 
    def __init__(self, frame, icon=None, menu=None): 
     wx.adv.TaskBarIcon.__init__(self) 
     self.frame = frame 
     self.menu = menu 
     self.icon = icon 
     app_icon = wx.Icon() 
     app_icon.CopyFromBitmap(wx.Bitmap(self.icon, wx.BITMAP_TYPE_PNG)) 
     self.SetIcon(app_icon) 

     self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.OnTaskBarLeftClick) 

    def OnTaskBarLeftClick(self, evt): 
     self.frame.Show() 
     self.frame.Recover() 

    def CreatePopupMenu(self): 
     new_menu = wx.Menu() 
     return self.menu 

Antwort

0

Da die TaskBarIcon Klasse im wx.adv Modul wird dann das Ereignis coresponding Binde- und Ereignistyp-IDs ist auch in wx.adv.

0

Ich habe es falsch gemacht. Um das Menü Popup zu machen, musste ich es mit wx.EVT_MENU binden.

self.Bind(wx.EVT_MENU, self.click_me, id=self.m_cb.GetId()) 
0

Verwenden Sie stattdessen den folgenden Code. Pls. Beachten Sie, dass das Ereignis wx.adv.EVT_TASKBAR_LEFT_DOWN und nicht wx.adv.wxEVT_TASKBAR_BALLOON_CLICK lauten sollte. Ich wurde von den Aufforderungen von pycharm vorher in die Irre geführt.

self.Bind (wx.adv.EVT_TASKBAR_LEFT_DOWN, self.on_left_down)

+0

Willkommen Überlauf Stack! Wenn Sie eine NEUE Frage haben, klicken Sie bitte auf die Schaltfläche [Frage stellen] (// stackoverflow.com/questions/ask). Wenn Sie eine ausreichende Reputation haben, können Sie die Frage (// stackoverflow.com/privileges/vote-up) stellen. Alternativ "Stern" als Favorit und Sie werden über neue Antworten benachrichtigt. – LW001

Verwandte Themen