私が達成したいことの小さな例を作ることができました。緑色のパネルをダブルクリックすると消えてしまい、赤色のパネルをダブルクリックすると緑色のパネルが再び表示されますが、これも問題ありません。私が問題を抱えているのは、赤いパネルが表示されていないときに緑のパネルを上に移動して赤のパネルの代わりにし、緑のパネルを削除して赤のパネルが表示されたときの状態に戻す方法です。変更する必要はありませんグリッドサイザーでのそれらの位置。
誰か助けてくれませんか?
以下は、これを達成しようとしているテンプレートコードです。
import wx
class myframe(wx.Frame):
def __init__(self):
"Constructor. No arguments"
wx.Frame.__init__(self, None, size=(2000,2000))
self.myPanel1 = wx.Panel( self, size=(300, 300) )
myPanel2 = wx.Panel( self, size=(300, 300) )
self.myPanel1.SetBackgroundColour("green")
myPanel2.SetBackgroundColour("red")
myGridSizer = wx.GridBagSizer()
myGridSizer.Add(self.myPanel1, pos=(0, 0), span=(1,1), flag=wx.EXPAND)
myGridSizer.Add(myPanel2, pos=(1, 0), span=(1,1), flag=wx.EXPAND)
self.SetSizer(myGridSizer)
self.myPanel1.Bind(wx.EVT_LEFT_DCLICK, self.hideMe)
myPanel2.Bind(wx.EVT_LEFT_DCLICK, self.showMe)
def hideMe(self, event):
print "hide!"
self.myPanel1.Hide()
def showMe(self, event):
print "show!"
self.myPanel1.Show()
if __name__ == "__main__":
print "Running Demo"
app = wx.App()
region = myframe()
region.Show()
app.MainLoop()