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} ".format(time.strftime('%H:%M:%S'),message))

原文地址:https://www.cnblogs.com/xia-dong/p/11713411.html