wxpython textctrl_wxPython TextCtrl类

wx.TextCtrl(parent, id, value, pos, size, style)

样式(style)参数接受一个或多个常量,如下列表 −

S.N.

参数&描述

1

wx.TE_MULTILINE

文本控件允许多行。如果未指定该样式(style),换行字符不应该在控件值中使用。

2

wx.TE_PASSWORD

文本将回显为星号

3

wx.TE_READONLY

文本将不可编辑

4

wxTE_LEFT

在控件中的文本将左对齐(默认)

5

wxTE_CENTRE

在控件中的文本将居中对齐

6

wxTE_RIGHT

在控件中的文本将居右对齐

wx.TextCtrl类的重要方法。

下面的事件绑定器负责处理事件相关的TextCtrl框中输入文字 -

S.N.

事件&描述

1

EVT_TEXT

响应变化的文本框的内容,或者通过手动键入,或以编程方式

2

EVT_TEXT_ENTER

调用相关的处理程序当Enter键在文本框中按下

3

EVT_TEXT_MAXLEN

只要文本长度进入触发相关处理程序达到SetMaxLength()函数的值

实例

在下面的例子中,具有不同属性的 wx.TextCtrl 类的四个对象被放置在面板上。

self.t1 = wx.TextCtrl(panel)

self.t2 = wx.TextCtrl(panel,style = wx.TE_PASSWORD)

self.t3 = wx.TextCtrl(panel,size = (200,100),style = wx.TE_MULTILINE)

self.t4 = wx.TextCtrl ( panel, value = "ReadOnly Text",

style = wx.TE_READONLY | wx.TE_CENTER )

虽然首先是一个普通的文本框,第二个是一个密码字段。第三个是多行文本框,而最后一个文本框是不可编辑的。

第一个框 EVT_TEXT 绑定器触发 OnKeyTyped()方法可以处理每个击键。第二个框它的最大长度为5。一旦用户试图输入超过500个字符,EVT_TEXT_MAXLEN 绑定器发送运行OnMaxLen()函数。多行文本框响应回车键按下,因为EVT_TEXT_ENTER绑定器。

TextCtr.py 完整的代码如下 -

import wx

class Mywin(wx.Frame):

def __init__(self, parent, title):

super(Mywin, self).__init__(parent, title = title,size = (350,250))

panel = wx.Panel(self)

vbox = wx.BoxSizer(wx.VERTICAL)

hbox1 = wx.BoxSizer(wx.HORIZONTAL)

l1 = wx.StaticText(panel, -1, "文本域")

hbox1.Add(l1, 1, wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5)

self.t1 = wx.TextCtrl(panel)

hbox1.Add(self.t1,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5)

self.t1.Bind(wx.EVT_TEXT,self.OnKeyTyped)

vbox.Add(hbox1)

hbox2 = wx.BoxSizer(wx.HORIZONTAL)

l2 = wx.StaticText(panel, -1, "密码文本")

hbox2.Add(l2, 1, wx.ALIGN_LEFT|wx.ALL,5)

self.t2 = wx.TextCtrl(panel,style = wx.TE_PASSWORD)

self.t2.SetMaxLength(5)

hbox2.Add(self.t2,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5)

vbox.Add(hbox2)

self.t2.Bind(wx.EVT_TEXT_MAXLEN,self.OnMaxLen)

hbox3 = wx.BoxSizer(wx.HORIZONTAL)

l3 = wx.StaticText(panel, -1, "多行文本")

hbox3.Add(l3,1, wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5)

self.t3 = wx.TextCtrl(panel,size = (200,100),style = wx.TE_MULTILINE)

hbox3.Add(self.t3,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5)

vbox.Add(hbox3)

self.t3.Bind(wx.EVT_TEXT_ENTER,self.OnEnterPressed)

hbox4 = wx.BoxSizer(wx.HORIZONTAL)

l4 = wx.StaticText(panel, -1, "只读取文本")

hbox4.Add(l4, 1, wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5)

self.t4 = wx.TextCtrl(panel, value = "只读文本",style = wx.TE_READONLY|wx.TE_CENTER)

hbox4.Add(self.t4,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5)

vbox.Add(hbox4)

panel.SetSizer(vbox)

self.Centre()

self.Show()

self.Fit()

def OnKeyTyped(self, event):

print event.GetString()

def OnEnterPressed(self,event):

print "Enter pressed"

def OnMaxLen(self,event):

print "Maximum length reached"

app = wx.App()

Mywin(None, 'TextCtrl实例-www.yiibai.com')

app.MainLoop()

上面的代码产生下面的输出 -

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值