2011-07-29 26 views
6

Tôi đang sử dụng wx.Python và có một nhóm đối tượng mà tôi muốn 'bọc' trong một hộp tĩnh tương tự như sau:Làm cách nào để thêm các mục bên trong hộp tĩnh khi sử dụng Sizers?

enter image description here

Tuy nhiên đó tutorial uses position sizes, và tôi đang sử dụng Sizers để thay thế. Tôi đang gặp một thời gian khó khăn nhận được các mục bên trong:

enter image description here

mà là họ đang bên dưới hộp tĩnh. Làm cách nào để đưa các đối tượng vào trong hộp tĩnh bằng Sizers chứ không phải vị trí?

Dưới đây là mã của tôi:

# Date and Graph Type Selection 

    self.dateLbl = wx.StaticBox(self, -1, 'Date Range:', size=(240, 140)) 
    self.dategraphSizer = wx.BoxSizer(wx.VERTICAL) 
    self.dategraphSizer.Add(self.dateLbl, 0, wx.ALL|wx.LEFT, 5) 

    # Date Range Selection 
    self.dateSizer = wx.BoxSizer(wx.HORIZONTAL) 
    self.dateone = wx.TextCtrl(self, -1, style=wx.ALIGN_LEFT) 
    self.datetwo = wx.TextCtrl(self, -1, style=wx.ALIGN_LEFT) 
    self.date2Lbl = wx.StaticText(self, -1, "TO") 
    self.dateSizer.Add(self.dateone, 0, wx.ALL|wx.CENTER, 2) 
    self.dateSizer.Add(self.date2Lbl, 0, wx.ALL|wx.CENTER, 2) 
    self.dateSizer.Add(self.datetwo, 0, wx.ALL|wx.CENTER, 2) 


    # Date Quick Selection Buttons 
    self.dategraphSizer.Add(self.dateSizer, 0, wx.ALL|wx.CENTER, 5) 
    self.todayButton = wx.Button(self, -1, 'Today Only') 
    self.dategraphSizer.Add(self.todayButton, 0, wx.ALL|wx.LEFT, 5) 
    self.recentButton = wx.Button(self, -1, 'Most Recent Session') 
    self.dategraphSizer.Add(self.recentButton, 0, wx.ALL|wx.LEFT, 5) 

Trả lời

11

Khi sử dụng Sizers, bạn phải tạo một cụ 'Static Box Sizer' đó là một Sizer và chứa Box tĩnh bạn muốn sử dụng. Này được thực hiện bằng cách:

self.foo = wx.StaticBoxSizer(self.box, wx.ORIENT) 

Điều này có nghĩa rằng Box tĩnh của bạn cần phải được tạo ra trước đó và là một đối số truyền cho việc tạo ra các Sizer. Từ đó, Sizer hoạt động giống như một Sizer thông thường. Đây là những gì tôi đã sửa lỗi trong code:

# Date and Graph Type Selection 

    self.dateLbl = wx.StaticBox(self, -1, 'Date Range:', size=(240, 140)) 
    self.dategraphSizer = wx.StaticBoxSizer(self.dateLbl, wx.VERTICAL) 
    #self.dategraphSizer.Add(self.dateLbl, 0, wx.ALL|wx.LEFT, 5) NOTE THIS ISN'T NEEDED ANYMORE 

    # Date Range Selection 
    self.dateSizer = wx.BoxSizer(wx.HORIZONTAL) 
    self.dateone = wx.TextCtrl(self, -1, style=wx.ALIGN_LEFT) 
    self.datetwo = wx.TextCtrl(self, -1, style=wx.ALIGN_LEFT) 
    self.date2Lbl = wx.StaticText(self, -1, "TO") 
    self.dateSizer.Add(self.dateone, 0, wx.ALL|wx.CENTER, 2) 
    self.dateSizer.Add(self.date2Lbl, 0, wx.ALL|wx.CENTER, 2) 
    self.dateSizer.Add(self.datetwo, 0, wx.ALL|wx.CENTER, 2) 


    # Date Quick Selection Buttons 
    self.dategraphSizer.Add(self.dateSizer, 0, wx.ALL|wx.CENTER, 5) 
    self.todayButton = wx.Button(self, -1, 'Today Only') 
    self.dategraphSizer.Add(self.todayButton, 0, wx.ALL|wx.LEFT, 5) 
    self.recentButton = wx.Button(self, -1, 'Most Recent Session') 
    self.dategraphSizer.Add(self.recentButton, 0, wx.ALL|wx.LEFT, 5) 

nào mang lại kết quả này:

enter image description here

+1

Good job cho việc tìm kiếm nó ra cho mình :-) –

Các vấn đề liên quan