代码之家  ›  专栏  ›  技术社区  ›  Sardathrion - against SE abuse

将图像添加到按钮

  •  0
  • Sardathrion - against SE abuse  · 技术社区  · 7 年前

    GUI

    hbox = wx.BoxSizer(wx.HORIZONTAL)
    _img = wx.StaticBitmap()
    _img.Create(parent, label=wx.Bitmap(os.path.join(
        os.path.dirname(__file__), 'images', 'exit-to-app.svg')))
    hbox.Add(_img, proportion=1, flag=wx.ALIGN_CENTER | wx.ALL)
    _exit = wx.Button(parent, label="Exit")
    _exit.SetBackgroundColour('#5968c3')
    self.Bind(wx.EVT_BUTTON, self.OnQuit, _exit)
    hbox.Add(_exit, proportion=1, flag=wx.ALIGN_CENTER | wx.ALL)
    return hbox
    

    如何将位图添加到按钮?

    2 回复  |  直到 7 年前
        1
  •  1
  •   RobinDunn    7 年前

    wx.Button 现在已经支持在标签上添加位图了,尽管在GTK版本中,我认为这也取决于是否显示图标的全局偏好,可能还取决于活动主题。有关示例,请参见演示中的按钮示例。

    https://github.com/wxWidgets/Phoenix/blob/master/demo/Button.py#L28

        2
  •  1
  •   Rolf of Saxony    7 年前

    wx.lib.buttons 虽然按钮可能有点简单。
    然而,正如@RobinDunn指出的,他应该知道,因为版本2.9.1 wx。按钮支持显示文本和图像(当前仅当使用wxMSW、wxGTK或OSX/Cocoa端口时)。

    desktop settings 我已经准备好了 Show Icons on Buttons 或者第二种方法使用 wx.Button
    使用第二种方法,按钮看起来更好,失去了平面外观。

    import wx
    import wx.lib.buttons as buts
    class TestFrame(wx.Frame):
        def __init__(self, *args, **kwargs):
            wx.Frame.__init__(self, *args, **kwargs)
            pause_button = buts.GenBitmapTextButton(self, -1, bitmap=wx.Bitmap("pause.png"), label= "Pause")
            play_button = buts.GenBitmapTextButton(self, -1, bitmap=wx.Bitmap("play.png"), label= "Play")
            time_button = wx.Button(self, -1, label= "Time")
            time_button.SetBitmap(wx.Bitmap("toggle1.png"),wx.RIGHT)
            box = wx.BoxSizer(wx.HORIZONTAL)
            box.Add(pause_button, 0, wx.CENTER | wx.ALL,10)
            box.Add(play_button, 0, wx.CENTER | wx.ALL,10)
            box.Add(time_button, 0, wx.CENTER | wx.ALL,10)
            self.SetSizerAndFit(box)
            self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
            pause_button.Bind(wx.EVT_BUTTON, self.OnPause)
            play_button.Bind(wx.EVT_BUTTON, self.OnPlay)
            time_button.Bind(wx.EVT_BUTTON, self.OnTime)
            self.Show()
    
        def OnCloseWindow(self, event):
            self.Destroy()
        def OnPause(self, event):
            print "Pause pressed"
        def OnPlay(self, event):
            print "Play pressed"
        def OnTime(self, event):
            print "Time pressed"
    
    if __name__ == "__main__":
        app = wx.App()
        frame = TestFrame(None, -1, "wxBitmap Test")
        app.MainLoop()
    

    enter image description here