나는 wx/python에 익숙하지 않으므로 바보 같거나 잘못 설명하면 변명의 여지가있다.sizer.replace()는 "오래된"sizercontent를 "덮어 쓴다"
아래 스 니펫에 나와있는 것처럼 중첩 크기 조정 프로그램을 새 크기 조정 프로그램으로 바꿉니다. 약간의 수정을 한 후에 모든 것이 잘되는 것 같지만 부모 - 크기 결정자의 재 설계가 필요합니다. 이전 중첩 선별기의 내용이 남아 있고 내 sizer.Layout()
시스템 설정에도 불구하고 새로운 선별기 함량 이상 "그린"도착 :
- 파이썬 2.5.5.2 및 2.6.4
- wxPython을 2.8
# -*- coding: utf8 -*-
import wx
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, title='test')
class Test(wx.App):
def OnInit(self):
frame = Frame()
self.panel = wx.Panel(frame)
self.panel.SetBackgroundColour('red')
self.sizer = wx.BoxSizer(wx.VERTICAL)
button = wx.Button(self.panel, wx.ID_ANY, 'TEST')
self.hsizer = wx.BoxSizer(wx.HORIZONTAL)
self.hsizer.Add(wx.StaticText(self.panel, wx.ID_ANY, 'nacknack'))
self.sizer.Add(button)
self.Bind(wx.EVT_BUTTON, self.on_test_button, button)
self.text = wx.StaticText(self.panel, wx.ID_ANY, 'FOOO')
self.sizer.Add(self.text)
self.sizer.Add(self.hsizer)
self.panel.SetSizer(self.sizer)
frame.Show()
return True
def on_test_button(self, evt):
tmpsizer = wx.BoxSizer(wx.VERTICAL)
tmpsizer.Add(self.makesizer())
tmpitem = tmpsizer.GetChildren()[0]
self.sizer.Replace(2, tmpitem)
self.sizer.Layout()
def makesizer(self):
testsizer = wx.BoxSizer(wx.HORIZONTAL)
testsizer.Add(wx.StaticText(self.panel, wx.ID_ANY, 'testsizer'))
return testsizer
if __name__ == '__main__':
app = Test()
app.MainLoop()