工具栏工具 - 位图切换

时间:2016-08-02 20:58:08

标签: wxpython

我正在使用wxpython 2.8,这可能会让事情变得更加困难。

我正在尝试在工具栏中创建一个按钮,如果切换它只是更改其位图。只要切换发生变化,位图就会变为相应的图标。

由于此功能似乎没有内置,我不想将我的控件与我的观点过于紧密地混合,我很快就尝试了这个:

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()

所有toolbar.AddLabelTool()函数都返回ToolBarToolBase所以我认为我可以简单地扩展它,但是没有构造函数可以工作,看起来它只是c ++类的代理。

我尝试了其他一些方法,但似乎没有任何方法正常工作。当然必须有一个简单的解决方案。我想这是经常实施的。

1 个答案:

答案 0 :(得分:1)

您是对的, <form name="form1" method="POST" action="<?php echo $loginFormAction; ?>"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td colspan="4"><div align="center"><strong>Client Login</strong></div></td> </tr> <tr> <td></td> <td></td> <td><input name="myusername" type="text" id="myusername" placeholder="Company Name" size="24"></td> <td>&nbsp;</td> </tr> <tr> <td></td> <td></td> <td><input name="mypassword" type="password" id="mypassword" placeholder="password" size="25"></td> <td>&nbsp;</td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td><input name="Submit" type="submit" class="submit_button" value="Login"></td> <td>&nbsp;</td> </tr> </table> </td> </form> 不打算以这种方式用作公共API的一部分。它更像是一个内部使用类,您可以以有限的方式使用它来获取有关工具栏项的一些信息。从添加工具方法返回的内容实际上是一个特定于平台的派生类,它可以帮助wx类与本机工具栏小部件进行交互。

要在切换工具(ToolBarToolBase)时更改位图,您需要在单击工具时调用的事件处理程序中自己交换图像。您可以使用kind=wx.ITEM_CHECK之类的内容。您可能需要至少在某些平台上再次调用theToolBar.SetToolNormalBitmap(id, new_bmp)以使工具栏获取新图像。