Python GUI编程:wxPython模块之文本控件

2022-08-0422:55:07编程语言入门到精通Comments723 views字数 2846阅读模式

wxPython中的控件全部继承与wx.Control,包含了静态文本、文本输入控件、按钮、列表、滑块、滚动条、复选框等,本节我们来学习一下静态文本和文本输入控件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

    1. 静态文本文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

静态文本就是在上屏幕显示的静态文字,我们使用的是wx.StaticText类来完成,它的语法格式为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

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

label为显示在控件中的文本信息,其余的我们在前面都学习过就不再作解释。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

其中样式style的取值有:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.ALIGN_LEFT:文本在窗口部件中左对齐。这是默认的样式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.ALIGN_RIGHT:文本在窗口部件中右对齐。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本之后,静态文本控件不将自我调整尺寸。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

我们来使用这种方式来输出一首诗,代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(selfNone, wx.ID_ANY,"静态文本", size =(200170))
        panel = wx.Panel(self-1)
        wx.StaticText(panel, wx.ID_ANY, "春夜喜雨 ——杜甫。", (010),(145-1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "好雨知时节,当春乃发生。", (030),(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()

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

Python GUI编程:wxPython模块之文本控件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

注意我们在使用的时候首先要用wx.Panel方式来创建一个容器,类似于Tkinter中的Frame容器,然后我们在这个容器里放置一些组件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

我们还可以对文字信息进行修饰,使用wx.Font方法,它的语法结构如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

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

pointSize为字体的尺寸,family为字体的名字,style来判定倾斜,weight为宽度,underline为下划线,True有,False为无,faceName为此方法的字体名,encoding为编码方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

2. 文本输入控件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

我们在与程序交互的时候,静态文字是无法获取我们输入的信息,因此我们引入wx.TextCtrl类来获取用户输入的文本内容,它的语法结构为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

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

除了validator为过滤数据外其余的我们在前面都提到过,style在这里功能有所增添,我们介绍再介绍一下。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_CENTER:控件中的文本居中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_LEFT:控件中的文本左对齐。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_NOHIDESEL:文本始终高亮显示,只适用于Windows。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_PASSWORD:不显示所键入的文本,代替以星号显示。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_PROCESS_ENTER:如果使用了这个样式,那么当用户在控件内按下回车文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

键时,一个文本输入事件被触发。否则,按键事件内在的由该文本控件或该对话框管理。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在Tab键按下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

时创建。否则,Tab由对话框来管理,通常是控件键的切换。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_READONLY:文本控件为只读,用户不能修改其中的文本。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

wx.TE_RIGHT:控件中的文本右对齐。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

我们使用wx.TextCtrl来实现一个登陆界面。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(selfNone, wx.ID_ANY,"登陆", size =(300300))
        panel = wx.Panel(self-1)
        wx.StaticText(panel, wx.ID_ANY, "登录界面", (010),(150-1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "账户", (050),(80-1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "密码", (090),(80-1),wx.ALIGN_RIGHT)
        text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,50),(10020),wx.ALIGN_LEFT)
        text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,90),(10020),wx.ALIGN_LEFT)
if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show(True)
    app.MainLoop()

运行结果如图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

Python GUI编程:wxPython模块之文本控件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26571.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26571.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定