我是wxPython的新手。我正在使用Gridbagsizer進行佈局。 我幾乎成功地做出了我想要的佈局。但是對於一些未知的問題,它會帶來一些問題。用wxPython替換現有的佈局與新的佈局
我的目標: 我做了5個佈局。綠色,紅色,藍色,黃色和黑色。當我雙擊「This is test run」時,黃色佈局應該完全由黑色佈局取代。
實際發生了什麼: 黃色被黑色取代。沒有問題。但由於某種原因,藍色佈局位置轉移到了底部。
我的代碼是這樣的:
import wx
class myframe(wx.Frame):
def __init__(self):
"Constructor. No arguments"
wx.Frame.__init__(self, None, size=(1000,700))
self.TitlePanel = wx.Panel(self, size=(350, 400))
self.newPanel = wx.Panel(self, size=(300, 250))
imgPanel = wx.Panel(self, size=(300, 250))
modulePanel=wx.Panel(self, size=(350, 250))
self.TCPanel=wx.Panel(self, size=(300, 250))
############################################
self.TitlePanel.SetBackgroundColour("green")
imgPanel.SetBackgroundColour("red")
modulePanel.SetBackgroundColour("blue")
self.TCPanel.SetBackgroundColour("yellow")
self.newPanel.SetBackgroundColour("black")
self.newPanel.Hide()
############################################
self.myGridSizer = wx.GridBagSizer(1,1)
self.myGridSizer.Add(self.TitlePanel, pos=(0, 0), span=(4,8), flag=wx.EXPAND)
self.myGridSizer.Add(imgPanel, pos=(0, 10), span=(4,8), flag=wx.ALL)
self.myGridSizer.Add(modulePanel, pos=(10, 0), span=(1,8), flag=wx.ALL)
self.myGridSizer.Add(self.TCPanel, pos=(10, 10), span=(4,8), flag=wx.ALL)
#############################################
self.text1 = wx.StaticText(self.TitlePanel, label="This is a test run",style=2,size=(350,-1))
font = wx.Font(18, wx.DECORATIVE, wx.ITALIC,wx.BOLD, wx.NORMAL)
self.text1.SetFont(font)
#############################################
self.SetSizer(self.myGridSizer)
self.text1.Bind(wx.EVT_LEFT_DCLICK, self.hideMe)
imgPanel.Bind(wx.EVT_LEFT_DCLICK, self.showMe)
self.myGridSizer.SetEmptyCellSize((0, 0))
def hideMe(self, event):
self.TCPanel.Hide()
self.myGridSizer.Add(self.newPanel, pos=(5, 10), span=(4,8), flag=wx.ALL)
self.newPanel.Show()
self.Layout()
def showMe(self, event):
print "show!"
self.newPanel.Hide()
self.TCPanel.Show()
self.Layout()
if __name__ == "__main__":
app = wx.App()
region = myframe()
region.Show()
app.MainLoop()
所以,我如何替換佈局,並保持現有的佈局不變?
請更正您的源代碼的縮進。 – Fenikso
我不知道爲什麼會發生這種情況,我在Ubuntu中編寫了這段代碼,結果很好......但是現在,當我在Windows上運行這個代碼時,文本部分發生了錯誤,無論如何,現在這至少可以成功運行。再次感謝您的回答。 – Sam