繁体   English   中英

wxpython切换工具栏按钮

[英]wxpython toggle toolbar buttons

我有带有几个图标的wxpython工具栏,例如,连接,播放,保存等。我想切换连接图标。

连接后,连接位图应替换为断开连接,反之亦然。 wxpython中是否有任何可用的现成方法可实现工具栏中的此行为。 我使用的另一种方式是根据操作显示连接和断开连接以及启用/禁用,但是我有很多图标..因此,通过切换,我想节省一些空间

使用常规的wx.ToggleButton,您需要在toggle事件处理程序中更改图标:

import wx

########################################################################
class MyPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        self.save_ico = wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_TOOLBAR, (16,16))
        self.print_ico = wx.ArtProvider.GetBitmap(wx.ART_PRINT, wx.ART_TOOLBAR, (16,16))

        self.toggleBtn = wx.ToggleButton(self)
        self.toggleBtn.SetBitmap(self.save_ico)
        self.toggleBtn.Bind(wx.EVT_TOGGLEBUTTON, self.onToggle)

    #----------------------------------------------------------------------
    def onToggle(self, event):
        """"""
        btn = event.GetEventObject()
        if btn.GetValue():
            self.toggleBtn.SetBitmap(self.print_ico)
        else:
            self.toggleBtn.SetBitmap(self.save_ico)


########################################################################
class MyFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Toggle buttons")
        panel = MyPanel(self)
        self.Show()


#----------------------------------------------------------------------
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()

如果您使用ToggleButton的通用版本,则可以使用SetBitmapSelected()方法。 您可以在wx.lib.buttons中找到通用版本。 您可以在wxPython演示包中看到一个示例。

奇怪的是,从wxPython 2.9开始,常规ToggleButton出现了SetBitmapSelected(),但是它的功能不同。 当您按下按钮时,您只能看到替代图像,但是当释放按钮时,它将返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM