wxPython模块(2)-文本控件

点击打开在线编译器,边学边练

    wxPython中的控件全部继承与wx.Control,包含了静态文本、文本输入控件、按钮、列表、滑块、滚动条、复选框等,本节我们来学习一下静态文本和文本输入控件。

    1. 静态文本

        静态文本就是在上屏幕显示的静态文字,我们使用的是wx.StaticText类来完成,它的语法格式为:

wx.StaticText(parent,id,label=’’,pos=wx.DefaultPositon,size=wx.DefaultSize,style=’’,name=’’)

        label为显示在控件中的文本信息,其余的我们在前面都学习过就不再作解释。

        其中样式style的取值有:

        wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。

        wx.ALIGN_LEFT:文本在窗口部件中左对齐。这是默认的样式。

        wx.ALIGN_RIGHT:文本在窗口部件中右对齐。

        wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本之后,静态文本控件不将自我调整尺寸。

        我们来使用这种方式来输出一首诗,代码如下:

import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,"静态文本", size =(200, 170))
        panel = wx.Panel(self, -1)
        wx.StaticText(panel, wx.ID_ANY, "春夜喜雨 ——杜甫。", (0, 10),(145, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "好雨知时节,当春乃发生。", (0, 30),(160, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "随风潜入夜,润物细无声。", (0,50), (160, -1),wx.ALIGN_RIGHT)
        text =wx.StaticText(panel, wx.ID_ANY, "野径云俱黑,江船火独明。", (0,70),(160, -1),wx.ALIGN_RIGHT)
        text =wx.StaticText(panel, wx.ID_ANY, "晓看红湿处,花重锦官城。", (0,90),(160, -1),wx.ALIGN_RIGHT)
if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show(True)
    app.MainLoop()

        输出结果为:

QQ截图20200511154717.jpg

        注意我们在使用的时候首先要用wx.Panel方式来创建一个容器,类似于Tkinter中的Frame容器,然后我们在这个容器里放置一些组件。

        我们还可以对文字信息进行修饰,使用wx.Font方法,它的语法结构如下:

wx.Font(pointSize,fimily,style,weight,underline=True,faceName=’’,encoding=wx.FONTENCODING_DEFAULT)

        pointSize为字体的尺寸,family为字体的名字,style来判定倾斜,weight为宽度,underline为下划线,True有,False为无,faceName为此方法的字体名,encoding为编码方式。

        2. 文本输入控件

        我们在与程序交互的时候,静态文字是无法获取我们输入的信息,因此我们引入wx.TextCtrl类来获取用户输入的文本内容,它的语法结构为:

wx.TextCtrl(parent,id,value=’’,pos=wx.DefaultPositon,size=wx.DefaultSize,style,validator=wx.DefaultVali
dator,name=’’)

        除了validator为过滤数据外其余的我们在前面都提到过,style在这里功能有所增添,我们介绍再介绍一下。

        wx.TE_CENTER:控件中的文本居中。

        wx.TE_LEFT:控件中的文本左对齐。

        wx.TE_NOHIDESEL:文本始终高亮显示,只适用于Windows。

        wx.TE_PASSWORD:不显示所键入的文本,代替以星号显示。

        wx.TE_PROCESS_ENTER:如果使用了这个样式,那么当用户在控件内按下回车

        键时,一个文本输入事件被触发。否则,按键事件内在的由该文本控件或该对话框管理。

        wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在Tab键按下

        时创建。否则,Tab由对话框来管理,通常是控件键的切换。

        wx.TE_READONLY:文本控件为只读,用户不能修改其中的文本。

        wx.TE_RIGHT:控件中的文本右对齐。

        我们使用wx.TextCtrl来实现一个登陆界面。

        代码如下:

import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,"登陆", size =(300, 300))
        panel = wx.Panel(self, -1)
        wx.StaticText(panel, wx.ID_ANY, "登录界面", (0, 10),(150, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "账户", (0, 50),(80, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "密码", (0, 90),(80, -1),wx.ALIGN_RIGHT)
        text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,50),(100, 20),wx.ALIGN_LEFT)
        text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,90),(100, 20),wx.ALIGN_LEFT)
if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show(True)
    app.MainLoop()

        运行结果如图:

图片2.png


本文固定URL:https://www.dotcpp.com/course/292

第一章 人生苦短,我用Python
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 函数
第六章 面向对象编程
第七章 模块
第八章 异常处理和程序调试
第九章 文件及目录操作
第十章 GUI编程
第十一章 进程和线程
第十二章 数据库管理
第十三章 算法
第十四章 爬虫
第十五章 实战篇
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)