46972


開発・テストはMacでしています

以下のような配置を考えています  
横位置でセンタリングもします

テキスト  
テキスト 画像

イメージですと  
商品名  
値段 円記号の画像

ベースをwx.VERTICALにし、値段のところをwx.HORIZONTALにすれば良いかと考え以下のコードにしました

[code]

    self._notebook = wx.Notebook(self, wx.ID_ANY)
    self._goods_item_panel = wx.Panel(self._notebook, wx.ID_ANY)
    
    name = wx.StaticText(self._goods_item_panel, -1, goods['name'], style=wx.TE_CENTER)
    price = wx.StaticText(self._goods_item_panel, -1, str(goods['price']), style=wx.TE_CENTER)
    
    layout = wx.BoxSizer(wx.VERTICAL)
    layout.Add(bitmap, flag=wx.GROW)
    layout.Add(name, flag=wx.GROW)
    
    image = wx.Image('./a.png')
    bitmap = wx.StaticBitmap(self._goods_item_panel, -1, image, size=(image.GetSize()), style=wx.CENTER)
    layout2 = wx.BoxSizer(wx.HORIZONTAL)
    layout2.Add(bitmap, flag=wx.GROW)
    layout2.Add(price, 0)
    layout.Add(layout2)
    
[/code]

商品名はセンタリング出来るのですが、値段のところが左寄せから変えることが出来ません

アドバイスでもいただけると助かります


CC BY-SA 4.0
2018-07-25T10:09:56.033
46954
2018-07-26T01:16:27.973
27721
question
python python3
wxPythonを使用した画像とテキストの並び方について


`layout.Add(layout2, 1, flag=wx.CENTER)`と記述してlayout2を中央寄せで配置するのはいかがでしょうか。

[code]

    import wx
    
    application = wx.App()
    frame = wx.Frame(None, wx.ID_ANY, u'テスト', size=(300, 200))
    
    notebook = wx.Notebook(frame, wx.ID_ANY)
    goods_item_panel = wx.Panel(notebook, wx.ID_ANY)
    
    goods = {'name' : u'うまい棒', 'price': 10 }
    
    name = wx.StaticText(goods_item_panel, -1, goods['name'], style=wx.TE_CENTER)
    price = wx.StaticText(goods_item_panel, -1, str(goods['price']), style=wx.TE_CENTER)
    layout = wx.BoxSizer(wx.VERTICAL)
    #layout2に配置するためコメントアウト layout.Add(bitmap, flag=wx.GROW)
    layout.Add(name, flag=wx.GROW)
    
    image = wx.Bitmap('a.jpg')
    bitmap = wx.StaticBitmap(goods_item_panel, -1, image, size=(image.GetSize()), style=wx.CENTER)
    
    layout2 = wx.BoxSizer(wx.HORIZONTAL)
    layout2.Add(price, 0, flag=wx.TOP) #priceとbitmapのflagを一致させないと縦位置がずれる
    layout2.Add(bitmap, 1, flag=wx.TOP)
    layout.Add(layout2, 1, flag=wx.CENTER) #layout2自体を中央寄せ
    
    goods_item_panel.SetSizer(layout)
    notebook.AddPage(goods_item_panel, u'商品')
    
    frame.Show()
    notebook.Refresh()
    application.MainLoop()
    
[/code]


CC BY-SA 4.0
2018-07-26T01:16:27.973
46972
2018-07-26T01:16:27.973
9820
46954
answer