2010-06-30 7 views
2

다음 코드에 문제가 있습니다. 이해가되지 않습니다.wxPython에서 패널이 확장되지 않습니다.

panel1이 확장되지 않는 이유는 무엇입니까?

감사합니다.

import wx 

class MyFrame(wx.Frame): 
    def __init__(self, parent, mytitle, mysize): 
     wx.Frame.__init__(self, parent, wx.ID_ANY, mytitle, size=mysize) 
     panel1 = wx.Panel(self) 
     panel2 = wx.Panel(self) 
     panel3 = wx.Panel(self) 

     panel1.SetBackgroundColour("green") 
     panel2.SetBackgroundColour("yellow") 
     panel3.SetBackgroundColour("red") 

     sizer_h = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_v = wx.BoxSizer(wx.VERTICAL) 

     st1 = wx.StaticText(panel1, -1, "TEST") 
     sizer_h.Add(st1, 1, wx.EXPAND) 
     sizer_v.Add(sizer_h, proportion=1, flag=wx.EXPAND) 
     sizer_v.Add(panel2, proportion=2, flag=wx.EXPAND) 
     sizer_v.Add(panel3, proportion=1, flag=wx.EXPAND) 
     # only set the main sizer if you have more than one 
     self.SetSizer(sizer_v) 

app = wx.App() 
mytitle = "wx.Frame & wx.Panels" 
width = 300 
height = 320 
MyFrame(None, mytitle, (width, height)).Show() 
app.MainLoop() 

답변

1

st1이 아닌 sizer_h에 패널을 추가하려고합니다.

import wx 

class MyFrame(wx.Frame): 
    def __init__(self, parent, mytitle, mysize): 
     wx.Frame.__init__(self, parent, wx.ID_ANY, mytitle, size=mysize) 
     panel1 = wx.Panel(self) 
     panel2 = wx.Panel(self) 
     panel3 = wx.Panel(self) 

     panel1.SetBackgroundColour("green") 
     panel2.SetBackgroundColour("yellow") 
     panel3.SetBackgroundColour("red") 

     sizer_h = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_v = wx.BoxSizer(wx.VERTICAL) 

     st1 = wx.StaticText(panel1, -1, "TEST") 
     sizer_h.Add(panel1, wx.EXPAND) 
     sizer_v.Add(sizer_h, proportion=1, flag=wx.EXPAND) 
     sizer_v.Add(panel2, proportion=2, flag=wx.EXPAND) 
     sizer_v.Add(panel3, proportion=1, flag=wx.EXPAND) 
     # only set the main sizer if you have more than one 
     self.SetSizer(sizer_v) 

app = wx.App() 
mytitle = "wx.Frame & wx.Panels" 
width = 300 
height = 320 
MyFrame(None, mytitle, (width, height)).Show() 
app.MainLoop() 

은 이제 패널이 선별기의 전체 폭과 정적 텍스트의 높이로 확장 것을 볼 수 있고, 나머지는 빈 공간에 의해 점령된다. 그래서 수직으로 너무 패널을 작성하는 방법을 너무 확실하지

2

수정할 필요가있는 줄은 유감을 통해 아무 회색 누출, 없습니다 :

sizer_h.Add(st1, 1, wx.EXPAND)

가되어야한다

sizer_h.Add(panel1, 1, wx.EXPAND)

문자열뿐만 아니라 panel1의 크기를 조정해야하기 때문에.

관련 문제