wx.TextCtrl用于显示和编辑单行或多行文本。
- 组件样式
wx.TE_PROCESS_ENTER : 处理用户按下的Enter键。当wx.TextCtrl组件设置为wx.TE_PROCESS_ENTER样式时,用户在文本框里按下Enter键会触发wx.EVT_TEXT_ENTER事件,用户可以通过为wx.EVT_TEXT_ENTER事件绑定事件处理函数进行相关操作。
wx.TE_PROCESS_TAB : 处理用户按下的Tab键。当wx.TextCtrl组件设置为wx.TE_PROCESS_TAB样式时,会阻止Tab键的默认行为(即焦点移动至下一个组件),并触发wx.EVT_CHAR事件,用户可以通过为wx.EVT_CHAR事件绑定事件处理函数进行相关操作,比如在文本框里插入制表符等。
wx.TE_MULTILINE : 允许文本框换行(可处理多行文本,多行文本框)。
wx.TE_PASSWORD : 文本框里的文本以星号或小圆点等字符回显。
wx.TE_READONLY : 不允许修改文本框里内容(只读)。
wx.TE_AUTO_URL : 用带下划线的方式突出显示URL地址。
wx.HSCROLL : 显示水平滚动条。
wx.TE_LEFT : 默认样式,文本左对齐。
wx.TE_CENTRE : 文本居中。
wx.TE_RIGHT : 文本右对齐。
wx.TE_DONTWRAP : 与wx.HSCROLL样式一样,显示水平滚动条。
wx.TE_CHARWRAP : 自动换行样式,只在多行文本框下起作用。文本太长超过文本框宽度,需换行时,会在字符边界处被分割换行。
wx.TE_WORDWRAP : 自动换行样式,只在多行文本框下起作用。文本太长超过文本框宽度,需换行时,会在单词边界(即空格或标点符号)处被分割换行。
wx.TE_BESTWRAP : 默认自动换行样式,只在多行文本框下起作用。文本太长超过文本框宽度,需换行时,默认按单词边界换行,但如果其中单词太长超过文本框宽度,就按字符边界换行。
(注:以上样式在不同的操用系统上可能存在差异)
- 事件处理
wx.EVT_TEXT : 文本框中文本发生变化时触发该事件。
文本内容变化时触发该发wx.EVT_TEXT
wx.EVT_TEXT_ENTER : 文本框中按下Enter键触发该事件。(注:文本框组件必须包含为wx.TE_PROCESS_ENTER样式,该事件才会生效)
按下Enter键触发wx.EVT_TEXT_ENTER事件
wx.EVT_TEXT_URL : 鼠标移动到文本框组件中的URL文本时触发该事件。(注:文本框组件必须包含为wx.TE_AUTO_URL样式,让文本框可以自动识别文本中的URL才会生效)
wx.EVT_TEXT_URL事件
wx.EVT_TEXT_MAXLEN : 文本框中输入的文本字符数超过文本框允许的最大字符个数(用wx.TextCtrl.SetMaxLength函数设置),触发该事件。
输入文本超过文本框设置的允许输入最大值,触发wx.EVT_TEXT_MAXLEN事件
- 方法
__init__ (self, parent, id=ID_ANY, value=””, pos=DefaultPosition, size=DefaultSize, style=0, name=TextCtrlNameStr)
构造函数
参数
parent - 父窗体。不能为空(None)。
id - 文本框标识符。默认值为wx.ID_ANY(-1),表示由系统自动分配一个唯一标识符。
value - 文本框中默认文本值。
pos - 文本框位置。
size - 文本框大小。
style - 文本框样式。
name - 文本框名称。
创建只读文本框
EmptyUndoBuffer(self)
清空撤销缓冲区,文本框撤销缓冲区清空后文本框中的文本内容不能进行撤销操作(只对Windows系统中wx.TE_RICH2样式文本框和Mac系统中wx.TE_MULTILINE样式文本框有效)。
清空撤销缓冲区
EmulateKeyPress(self, event)
模拟文本框上的按键事件,插入与事件相关联的控制符。
参数
event - 按键事件(wx.KeyEvent)。
返回
模拟事件导致文本框改变返回True,否则返回Fasle。
鼠标点击按钮后在文本框上模拟按键
GetLineLength(self, lineNo)
获取指定行的长度(字符数)(不包括换行符)。
参数
lineNo - 行号(从0开始,0为第1行)。
返回
行的长度,指定行号不存在返回-1。
获取行文本长度
GetLineText(self, lineNo)
获取指定行文本内容(不包括换行符)。
参数
lineNo - 行号(从0开始,0为第1行)。
返回
指定行文本。
按行获取文本内容
GetNumberOfLines(self)
获取文本行数。
返回
文本行数。
文本框中文本行数
IsModified(self)
判断文本内容是否修改过。
返回
True修改过,False没有修改过
修改文本内容
IsMultiLine(self)
判断是否多行文本框。
返回
True多行文本框,False单行文本框。
IsSingleLine(self)
判断是否单行文本框。
返回
True单行文本框,False多行文本框。
结果
LoadFile(self, filename)
加载指定文本文件至文本框。
参数
filename - 文本文件名。
返回
True加载成功,False失败。
文本框加载文本文件
MarkDirty(self)
设置文本框为已修改状态。
结果
PositionToCoords(self, pos)
将给定的文本字符的索引位置转换为以像素为单位的客户端坐标。
参数
pos - 文本字符索引位置(从0开始)。
返回
如果转换成功返回以像素为单位的wx.Point对象坐标,如果失败返回wx.DefaultPosition对象。
文本字符坐标位置
PositionToXY(self, pos)
将给定的文本字符的索引位置转换为以字符行、列为单位的客户端坐标。
参数
pos - 文本字符索引位置(从0开始)。
返回
返回元组对象,第1个元素表示指定索引的字符是否存在(True存在,False不存在),第2个元素表示字符所在行号,第3个元素表示字符所在列号。
文本字符所在行列
SaveFile(self, filename="")
保存文本框文本内容至指定文件。
参数
filename - 保存文本的文件名称。
返回
True保存成功,False保存失败
保存文件
SetModified(self, modified)
设置文本框修改状态。
参数
modified - 修改状态,True设置为已修改状态,False设置为未修改状态。
文本内容修改状态
XYToPosition(self, x, y)
获取文本框中指定行、列上字符索引位置。
参数
x - 列数
y - 行数
返回
字符位置索引(从0开始)。
获取字符位置索引
write(self, text)
追加文本到文本框末尾。
参数
text - 要追加的文本。
追加文本内容