This new question is build on this使用wxPython進行佈局管理
我遇到了在wxPython中管理佈局的問題。 在這個程序中,我有兩個佈局中的兩個按鈕。但不管我做什麼,我都不能改變這些按鈕的位置或對齊方式。這些按鈕被固定在藍色和黃色的佈局。
我的代碼是這樣的:
import wx
class myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, size=(1000,700))
self.TitlePanel = wx.Panel(self, size=(350, 400))
self.TitlePanel.SetBackgroundColour("green")
self.newPanel = wx.Panel(self, size=(300, 250))
self.newPanel.SetBackgroundColour("black")
self.newPanel.Hide()
self.imgPanel = wx.Panel(self, size=(300, 250))
self.imgPanel.SetBackgroundColour("red")
self.modulePanel=wx.Panel(self, size=(350, 250))
self.modulePanel.SetBackgroundColour("blue")
self.TCPanel=wx.Panel(self, size=(300, 250))
self.TCPanel.SetBackgroundColour("yellow")
self.myGridSizer = wx.GridBagSizer(1,1)
self.myGridSizer.SetEmptyCellSize((0, 0))
self.myGridSizer.Add(self.TitlePanel, pos=(0, 0), span=(4,8), flag=wx.EXPAND)
self.myGridSizer.Add(self.imgPanel, pos=(0, 10), span=(4,8), flag=wx.EXPAND)
self.myGridSizer.Add(self.modulePanel, pos=(10, 0), span=(4,8), flag=wx.EXPAND)
self.myGridSizer.Add(self.TCPanel, pos=(10, 10), span=(4,8), flag=wx.EXPAND)
############################# Add Text to 1st Panel #########################################
self.text1 = wx.StaticText(self.TitlePanel, label="This is a test run",style=wx.ALIGN_LEFT,size=(300,-1))
font = wx.Font(18, wx.DECORATIVE, wx.ITALIC,wx.BOLD, wx.NORMAL)
self.text1.SetFont(font)
self.titleSizer = wx.BoxSizer()
self.titleSizer.Add(self.text1, flag=wx.CENTER|wx.LEFT|wx.ALIGN_RIGHT,border=10)
self.TitlePanel.SetSizer(self.titleSizer)
#########################################################################################
############################### Add Buttons in 3rd Panel ################################
self.moduleSizer = wx.BoxSizer()
self.button1 = wx.Button(self.modulePanel, label="Show Yellow Panel",size=(200,-1),style=wx.ALIGN_RIGHT)
self.moduleSizer.Add(self.button1, flag=wx.CENTER|wx.EXPAND|wx.ALIGN_RIGHT,border=10)
#########################################################################################
self.TCSizer=wx.BoxSizer()
self.button2 = wx.Button(self.TCPanel, label="Bring Black Panel",size=(200,-1))
self.TCSizer.Add(self.button2, flag=wx.CENTER|wx.RIGHT|wx.ALIGN_RIGHT,border=10)
#########################################################################################
self.SetSizer(self.myGridSizer)
self.text1.Bind(wx.EVT_LEFT_DCLICK, self.hideMe)
self.button1.Bind(wx.EVT_BUTTON, self.showMe)
self.button2.Bind(wx.EVT_BUTTON, self.hideMe)
def hideMe(self, event):
self.TCPanel.Hide()
self.myGridSizer.Replace(self.TCPanel, self.newPanel)
self.newPanel.Show()
self.Layout()
def showMe(self, event):
self.newPanel.Hide()
self.myGridSizer.Replace(self.newPanel, self.TCPanel)
self.TCPanel.Show()
self.Layout()
if __name__ == "__main__":
app = wx.App()
region = myframe()
region.Show()
app.MainLoop()
現在,如果我能採取的按鈕佈局,這將是很好的稍微右側。 有沒有什麼好的教程。請建議。
我希望做什麼:從藍色面板
按鈕應該是在藍色面板從黃色面板
按鈕的中間將有我想要的像素的縮進。如果我想留下20像素的間隙,那麼按鈕將放置在黃色面板中20像素之後。
如果這是可能的話,這將是一個很大的幫助。
你可以畫出並解釋你希望它看起來像和行爲?我懷疑你使用你的sizer層次結構,並錯誤地鍵入你想要實現的內容... – Fenikso
我提供了一個繪圖,希望這可以清除所有內容。 – Sam
我明白了。不過,我不確定我會很快有機會回答這個問題......但無論如何,這將有助於他人理解這個問題。 – Fenikso