wxpython 學習之 --文本框與Boxsizer布局管理器


繼上次窗口分割之后,初始化左右兩個面板

    def InitLpanel(self):
        self.lpanel.SetBackgroundColour('#AABBCC')
        LBox = wx.BoxSizer(wx.VERTICAL) #創建左面板的整體布局管理器,為豎直方向

        nm_staticbox = wx.StaticBox(self.lpanel,-1,'Account:') #創建Account staticbox
        nm_sizer = wx.StaticBoxSizer(nm_staticbox,wx.VERTICAL) #為Account staticbox創建豎直的布局管理器

        nm_box = wx.BoxSizer(wx.HORIZONTAL) #創建文本框的布局管理器
        nm_input_box = wx.BoxSizer(wx.HORIZONTAL)

        username = wx.StaticText(self.lpanel,-1,"UserName") #創建靜態文本框
        passwd = wx.StaticText(self.lpanel,-1,label="Passwd")
        self.username_input = wx.TextCtrl(self.lpanel,-1,style=wx.TE_LEFT,value='username',size=(50,20)) #創建文本輸入框,self.username.GetValue()可以獲取文本輸入框的value
        self.passwd_input = wx.TextCtrl(self.lpanel,-1,style=wx.TE_LEFT|wx.TE_PASSWORD,value='12345678',size=(50,20)) #size為文本框的大小

        nm_box.Add(username,proportion=0,flag=wx.LEFT,border=1)
        #proportion=0時,表示控件大小不變,為正數時,按照值的大小進行縮放
        #flag有三類,wx.LEFT,wx.TOP,wx.RIGHT,wx.ALL等表示聲明邊界;wx.ALIGN_LEFT,wx.CENTER,wx.ALIGN_CENTER_HORIZONTAL,wx.ALIGEN_TOP,wx.ALIGN_BOTTOM等表示聲明對齊方式;wx.EXPAND為填充
        #border為邊界間隔
        nm_box.Add(passwd,0,wx.LEFT,15)
        nm_input_box.Add(self.username_input,0,wx.LEFT, 10)
        nm_input_box.Add(self.passwd_input,0,wx.LEFT, 20)
        LBox.Add(nm_sizer,0,wx.ALL|wx.LEFT|wx.RIGHT,10)

        nm_sizer.Add(nm_box,0,wx.ALL|wx.CENTER, 1)
        nm_sizer.Add(nm_input_box,0,wx.ALL|wx.CENTER, 1)

        self.lpanel.SetSizer(LBox) #boxsizer生效

    def InitRpanel(self):
        self.rpanel.SetBackgroundColour('#4F9D9D')
        self.logtext = wx.TextCtrl(self.rpanel, style=wx.TE_MULTILINE|wx.TE_RICH2|wx.TE_READONLY)
        #wx.TE_CENTER 文本居中;
        # wx.TE_LEFT左對齊;
        # wx.TE_PASSWORD 文本用*號代替;
        # wx.TE_READONLY,只讀,用戶不能修改
        #wx.TE_MULTILINE 多行顯示
        #wx.TE_HSCROLL 長的行將不換行,顯示水平滾動條
        #wx.TE_RICH2 把最新版本的豐富文本控件用作基本的窗口部件
        self.logtext.SetMaxLength(0) #取消默認文本長度限制,當其它數字時,可以限制文本的輸入長度

        self.points=self.logtext.GetFont().GetPointSize() #當前字體大小
        self.font=wx.Font(self.points+3,wx.DEFAULT,wx.NORMAL,wx.BOLD,False)
        #self.font=wx.Font(self.points+3,wx.ROMAN,wx.ITALIC,wx.BOLD,True)
        #wx.Font(pointSize,family,style,weight,underline)
        #pointSize:wx.DEFAULT,wx.MODERN,wxROMAN,wx.SCRIPT,wx.SWISS
        #sytle:wx.MORMAL,wx.SLANT,wx.ITALIC
        #weight:wx.NORMAL,wx.LIGHT,wx.BOLD
        #True :underline or not

        statictext=wx.StaticText(self.rpanel,-1,label='Log Area')
        statictext.SetForegroundColour(wx.BLACK)
        #statictext.SetBackgroundColour(wx.WHITE)
        RBox=wx.BoxSizer(wx.VERTICAL)
        RBox.Add(statictext,0,flag=wx.ALL|wx.CENTER,border=2)
        RBox.Add(self.logtext,1,flag=wx.ALL|wx.EXPAND,border=2)
        self.rpanel.SetSizer(RBox)

運行結果:

 

 

在輸出log的時候還可以加顏色顯示

def LogMessage(self,message,colour='BLACK'):
self.logtext.SetDefaultStyle(wx.TextAttr(colour,wx.WHITE,self.font))
self.logtext.AppendText("[{0}]:{1}\n".format(time.strftime('%H:%M:%S'),message))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM