2017-12-03 31 views
1

これはnoobieの質問ではないと思っていますが、私はプロジェクトのためにWxPythonを理解しようとしています。トップバーの左右にアイテムを追加する必要があります。wxPython - 左右のレイアウト項目

Diagram of what I am trying to achieve

私が使っていたのですコードの下に含まれています(私はそれがあまりにも長くはありません願っています)。

私が想定していることを達成することは可能でしょうか?

私が主に関心を持っているのは、私が間違っていた箇所を理解することです。私はインターネットを検索していますが、解決策(特に適切な説明があるもの)を見つけることができません。 StackOverflowのに

import wx 

class MyPanel(wx.Panel): 
    def __init__(self, parent, clientSize): 
     super(MyPanel, self).__init__(parent, id=wx.ID_ANY, size=clientSize) 

class MainDialog(wx.Frame): 
    def __init__(self): 
     super(MainDialog, self).__init__(None, title = 'Test name', 
     size = (1024, 768), style = wx.CAPTION | wx.SYSTEM_MENU | wx.RESIZE_BORDER) 

     # Create the window client panel. 
     clientSize = self.GetClientSize() 
     self.__panel = MyPanel(self, self.GetClientSize()) 

     self.__CreateInterface() 

     self.SetMinSize((1024, 765)) 
     self.__panel.Layout() 

    def __CreateInterface(self): 

     self.__panelSizer = wx.BoxSizer(wx.VERTICAL) 

     topBarSizer = wx.BoxSizer(wx.HORIZONTAL) 

     img = wx.Image("avatar.png", wx.BITMAP_TYPE_ANY) 
     sb1 = wx.StaticBitmap(self.__panel, -1, wx.BitmapFromImage(img)) 
     topBarSizer.Add(sb1, flag=wx.LEFT | wx.TOP | wx.ALIGN_LEFT, border=10) 

     userDataSizer = wx.BoxSizer(wx.VERTICAL) 

     labelCtl = wx.StaticText(self.__panel, 
      label='USER INFO:', style=wx.ALIGN_RIGHT, size=(350, -1)) 
     userDataSizer.Add(labelCtl, 
      flag = wx.LEFT | wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT, border = 8) 

     l1 = wx.StaticText(self.__panel, label = 'Glitter Gem', 
     style=wx.ALIGN_RIGHT, size = (350, -1)) 
     userDataSizer.Add(l1, flag = wx.LEFT | wx.RIGHT | wx.ALIGN_RIGHT, 
      border = 8) 

     topBarSizer.Add(userDataSizer, flag = wx.ALIGN_RIGHT|wx.EXPAND) 

     self.__panelSizer.Add(topBarSizer, 0, wx.EXPAND, border = 8) 
     self.__panel.SetSizer(self.__panelSizer) 


class TestApp(wx.App): 

    def OnInit(self): 
     mainDialog = MainDialog() 
     mainDialog.Show(True) 
     return True 

app = TestApp() 
app.MainLoop() 

答えて

0

ようこそ、

サイザーを使用して、ストレッチスペーサーを追加することができ、あなたの問題を解決するために、非常に複雑になることがあります:

topBarSizer.AddStretchSpacer(); 

私は強くZetcodeレイアウトガイドをお読みになることをお勧めだろうそれは何度も私を助けてくれました。

関連する問題