• 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))

  • 相关阅读:
    php安装扩展的几种方法
    navicat连接linux系统中mysql-错误:10038
    linux下报错bash: service: command not found
    linux配置防火墙和重启防火墙
    linux 环境安装
    匿名函数
    workman的学习总结
    xampp/apache启动失败解决方法
    Linux 查看IP
    慢查询日志
  • 原文地址:https://www.cnblogs.com/xia-dong/p/11713411.html
Copyright © 2020-2023  润新知