天天看點

BoxSizer設定登入頁面布局

直接上代碼吧(我也不知道為什麼第一次顯示的登入頁面是正常的,後面就一直有些問題,所有想要了解相關知識的參考一下就可)

1.代碼實作

class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title='使用者登入',size=(400,300))
        panel=wx.Panel(self)
        self.title=wx.StaticText(panel,label='請輸入使用者名和密碼')
        self.user_label=wx.StaticText(panel,label='使用者名')
        self.text_label=wx.TextCtrl(panel,style=wx.TE_LEFT)
        self.user_pwd=wx.StaticText(panel,label='密碼碼')
        self.password=wx.TextCtrl(panel,style=wx.TE_PASSWORD)
        self.button1=wx.Button(panel,label='取消')
        
        self.button2=wx.Button(panel,label='确定')
        self.button2.Bind(wx.EVT_BUTTON,self.OnclickSubmit)

        hsizer_user=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_user.Add(self.user_label,proportion=0,flag=wx.ALL,border=5)
        hsizer_user.Add(self.text_label,proportion=1,flag=wx.ALL,border=5)
        hsizer_pwd=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_pwd.Add(self.user_pwd,proportion=0,flag=wx.ALL,border=5)
        hsizer_pwd.Add(self.password,proportion=1,flag=wx.ALL,border=5)
        hsizer_button=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_button.Add(self.button1,proportion=0,flag=wx.ALIGN_CENTRE,border=5)
        hsizer_button.Add(self.button2,proportion=0,flag=wx.ALIGN_CENTRE,border=5)


        vsizer_all=wx.BoxSizer(wx.VERTICAL)
        vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=15)
        vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,border=45)
        vsizer_all.Add(hsizer_pwd,proportion=0,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,border=45)
        vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER|wx.TOP,border=15)
        panel.SetSizer(vsizer_all)



    def OnclickSubmit(self,event):
        message=''
        username=self.text_label.GetValue()
        password=self.password.GetValue()
        if username=='' or password=='':
            messgae='使用者名或密碼不能為空'
        elif username=='mr' and password=='mrsoft':
            message='登入成功'
        else:
            messgae='使用者名和密碼不比對'
        wx.MessageBox(message)



if __name__=='__main__':
    app=wx.App()
    frame=MyFrame(parent=None,id=-1)
    frame.Show()
    app.MainLoop()
 
           

2.執行結果

BoxSizer設定登入頁面布局

***就到這啦