2017-08-16 11 views
0

に画像を追加:ここでは、私は、この持っているボタン

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 

ボタンにビットマップを追加する方法は?

答えて

1

wx.Button GTKに私はそれはまた、アイコンが表示されるか否かをグローバルな好みに依存しており、おそらく考えて構築しますが、今しばらくの間、ラベルにビットマップを追加サポートしてきましたアクティブなテーマでもあります。例については、デモのButtonサンプルを参照してください。

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

+0

はい、ビットマップが配置されているラベルのどちら側を設定することもできます。 – RobinDunn

1

wx.lib.buttonsライブラリを使用することができますが、ボタンは少し平らであってもかまいません。
しかし、@RobinDunnが指摘しているように、バージョン2.9.1のwx.Buttonはテキストと画像の両方を表示できるので(現在はwxMSW、wxGTK、またはOSX/Cocoaポートを使用している場合のみ)サポートしています。

Linuxの場合、にShow Icons on Buttonsを設定していたか、またはwx.Buttonを使用して2番目の方法で画像が表示されないようにしなければなりませんでした。
2番目の方法を使用すると、ボタンがはっきりと見え、そのフラットな外観が失われます。

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

+1

ロビンズの新しい方法を答えに加えました。ありがとうRobin! –

関連する問題