我希望我的StaticTexts和TextCtrls對齊這樣的: http://i.stack.imgur.com/llE7F.pngwxPython的有道排列控件
所以我這樣做:
import wx
class LoginForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,wx.ID_ANY,title='Login',size=(800,600))
self.panel = wx.Panel(self,wx.ID_ANY)
email_label = wx.StaticText(self.panel,wx.ID_ANY,'Email: ')
pass_label = wx.StaticText(self.panel,wx.ID_ANY,'Password: ')
email = wx.TextCtrl(self.panel,wx.ID_ANY,'',size=(150,-1))
passwd = wx.TextCtrl(self.panel,wx.ID_ANY,'',size=(150,-1))
loginBtn = wx.Button(self.panel,wx.ID_ANY,'Login')
self.Bind(wx.EVT_BUTTON,self.onLogin,loginBtn)
topSizer = wx.BoxSizer(wx.VERTICAL)
labelSizer = wx.BoxSizer(wx.HORIZONTAL)
inputSizer = wx.BoxSizer(wx.HORIZONTAL)
labelSizer.Add(email_label,0,wx.RIGHT,112)
labelSizer.Add(pass_label,0,wx.RIGHT,177)
inputSizer.Add(email,0,wx.RIGHT,5)
inputSizer.Add(passwd,0,wx.RIGHT,5)
inputSizer.Add(loginBtn,0,wx.RIGHT,10)
topSizer.Add(labelSizer,0,wx.TOP|wx.ALIGN_RIGHT,0)
topSizer.Add(inputSizer,0,wx.TOP|wx.ALIGN_RIGHT,0)
self.panel.SetSizer(topSizer)
def onLogin(self):
pass
if __name__=='__main__':
app = wx.App()
frame = LoginForm().Show()
app.MainLoop()
這是正確的方法是什麼?玩弄對齊標誌和邊界值?或者有另一種方法可以做到這一點?
,我做到了,如果我想改變,例如,登錄按鈕的寬度,一切都會搞砸
嗯,這是我第一次使用wxPython。 我有兩個水平尺寸,因爲我想要StaticTexts在原始和TextCtrls在下一個原始。如果我已經理解你所說的話,我可以使用wxFlexGridSizer而不是那些橫向尺寸。這就像用於頁面佈局的HTML表格一樣?如果是這樣,我可以使用這種類型的sizer對齊TextCtrl框上方的「email:」嗎? –