前提・実現したいこと
wxPython を用いて GUI を作ろうとしています.
メインパネルの上部にメニュー用のパネルを用意し,そこにボタンを並べようと思っています.
発生している問題・エラーメッセージ
BoxSizer を用いてメニューパネルにボタンを横に並べようとしているのですが,
2つ以上配置してもボタンが1つしか現れません.(同じ場所に重なっているっぽい)
BoxSizer に Add していけば勝手に横に並んでくれると認識しているのですが,間違っているのでしょうか.
該当のソースコード
python
1import wx 2 3SCR_WIDTH, SCR_HEIGHT = 500, 400 4SCR_size = SCR_WIDTH, SCR_HEIGHT 5MB_size = 32, 32 6 7 8class MenuPanel(wx.Panel): 9 def __init__(self, parent, *args, **kw): 10 super().__init__(parent, *args, **kw) 11 self.set_buttons() 12 13 def set_buttons(self): 14 config_btn = wx.BitmapButton(self, wx.ID_ANY, 15 wx.Bitmap('./images/config.png'), 16 size=MB_size, style=0) 17 clear_btn = wx.BitmapButton(self, wx.ID_ANY, 18 wx.Bitmap('./images/clear.png'), 19 size=MB_size, style=0) 20 21 self.layout = wx.BoxSizer(wx.HORIZONTAL) 22 self.layout.Add(config_btn, flag=wx.GROW, border=0) 23 self.layout.Add(clear_btn, flag=wx.GROW, border=0) 24 25 self.SetSizer(self.layout) 26 27 28class MainPanel(wx.Panel): 29 def __init__(self, parent, *args, **kw): 30 super().__init__(parent, wx.ID_ANY, *args, **kw) 31 32 33class MyApp(wx.Frame): 34 35 def __init__(self, *args, **kw): 36 super(MyApp, self).__init__(*args, **kw) 37 self.init_ui() 38 39 def init_ui(self): 40 self.SetTitle('GUITest') 41 self.SetSize(SCR_size) 42 self.SetTransparent(128) 43 44 menu_panel = MenuPanel(self, pos=(0, 0), size=(SCR_WIDTH, 32)) 45 menu_panel.SetBackgroundColour('GRAY') 46 47 main_panel = MainPanel(self, pos=(0, 32), 48 size=(SCR_WIDTH, SCR_HEIGHT - 32)) 49 main_panel.SetBackgroundColour('RED') 50 51 52if __name__ == '__main__': 53 app = wx.App() 54 55 frame = MyApp(None, wx.ID_ANY) 56 57 frame.Center() 58 frame.Show() 59 60 app.MainLoop() 61
試したこと
BitMapButton でボタンを作成する際に, pos でボタンを重ならないように位置指定するとボタンがちゃんと表示されました.
ただいちいち pos を指定するのも面倒なので Add するだけで横に並んでもらいたいです.
補足情報(FW/ツールのバージョンなど)
Python 3.7.2
wxPython 4.0.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/30 09:20