Ich benutze wxpython 2.8, die Dinge etwas schwieriger machen können.Toolbar Tool - Bitmap toggle
Ich versuche, eine Schaltfläche in der Symbolleiste zu erstellen, die einfach ihre Bitmap ändert, wenn es umgeschaltet wird. Jedes Mal, wenn sich der Schalter ändert, ändert sich das Bitmaps in das entsprechende Symbol.
als diese Fähigkeit Sieht nicht eingebaut zu sein scheint, und ich will nicht meine Kontrollen zu eng mit meinen Ansichten mischen, versuchte ich schnell diese:
class ToggleToolBarBase(wx.ToolBarToolBase):
"""A ToolBar Button with bitmaps which is meant to be toggled."""
def __init__(self, tbar=None, toolid=wx.ID_SEPARATOR, label="",
bmpOff=wx.NullBitmap, bmpOn=wx.NullBitmap,
kind=wx.ITEM_NORMAL, clientData=None,
shortHelpString="", longHelpString=""):
# super(ToggleToolBarBase, self).__init__(self, tbar, toolid, label,
# bmpOff, bmpOn,
# kind, clientData,
# shortHelpString,
# longHelpString)
# Which constructor can I use?
super(ToggleToolBarBase, self).__init__()
self.tbar = tbar
self.bmpOff = bmpOff
self.bmpOn = bmpOn
self.toggle = False
def Toggle(self):
super(ToggleToolBarBase, self).Toggle()
self.toggle = not self.toggle
@property
def toggle(self):
return self._toggle
@toggle.setter
def toggle(self, value):
self._toggle = value
if value is False:
self.SetNormalBitmap(self.bmpOff)
elif value is True:
self.SetNormalBitmap(self.bmpOn)
self.tbar.Realize()
self.tbar.Refresh()
All toolbar.AddLabelTool() Funktionen zurückgeben ToolBarToolBase
, also dachte ich, ich könnte es einfach erweitern, aber keine Konstruktoren arbeiten und es sieht aus wie es ist nur ein Proxy für die C++ - Klasse.
Ich habe ein paar andere Methoden versucht, aber nichts scheint richtig zu funktionieren. Sicherlich muss es eine einfache Lösung geben. Ich kann mir vorstellen, dass dies ziemlich oft umgesetzt wird.