1、总结

  1、常用4种 编辑框 的构造

    1、普通编辑框

      

      单行输入的简单编辑框 (?为所在框的对象,同下)

      self.textBox = wx.TextCtrl(parent = ?)

    2、密码编辑框

      

      星号掩饰输入字符的密码框

      self.textBox = wx.TextCtrl(parent = ?, style = wx.TE_PASSWORD)

    3、只读文本框

      

      不能更改内容,但能复制的只读文本框

      self.textBox = wx.TextCtrl(parent = ?, style = wx.TE_READONLY, value = "我是只读文本框")

      我们想要修改内容的时候可以 : self.TextBox.SetValue("String")

    4、多行文本框

      

      可多行输入的文本框 (单行长度超出不自动换行)

      self.textBox =wx.TextCtrl(parent = ?,style = wx.TE_MULTILINE)

      (单行超出自动换行,即有水平滚动条)

      self.textBox =wx.TextCtrl(parent = ?,style = wx.TE_MULTILINE|wx.HSCROLL

  2、事件绑定

     self.textBox.Bind(事件类型, 相应函数)

     常用事件类型有:

     

  3、编辑框构造时的样式

     TextCtrl类的构造函数形式如下:

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

     value : 编辑框中的文本

     pos : 编辑框在窗口中的位置

     size:编辑框的大小

     style:编辑框的样式参数

     style 接受的常用参数

     

2、详解

  PS:总结中主要讲的是常用的到,一般普通的东西在上面就足够了。

     接下来是TextCtrl 的详细 类型参数 与 方法。

  1、wxPython 中 wx.TextCtrl 类的构造函数:

    

wx.TextCtrl(
parent,
id,
value='',
pos=wx.DefaultPostion,
size=wx.DefaultSize,
style=0,
validator=wx.DefaultValidator,
name=wx.TextCtrlNameStr
)

  2、wx.TextCtrl 的 样式参数

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:控件中的文本右对齐。

  3、函数修改 编辑框内文本的方法

AppendText(text):在尾部添加文本。
Clear():重置控件中的文本为“”。并且生成一个文本更新事件。
EmulateKeyPress(event):产生一个按键事件,插入与事件相关联的控制符,就如同实际的按键发生了。
GetInsertionPoint()
SetInsertionPoint(pos)
SetInsertionPointEnd():得到或设置插入点的位置,位置是整型的索引值。控件的开始位置是0。
GetRange(from, to):返回控件中位置索引范围内的字符串。
GetSelection()
GetStringSelection()
SetSelection(from, to):GetSelection()以元组的形式返回当前所选择的文本的起始位置的索引值(开始,结束)。
GetStringSelection()得到所选择的字符串。SetSelection(from, to)设置选择的文本。
GetValue()
SetValue(value):SetValue()改变控件中的全部文本。GetValue()返回控件中所有的字符串。
Remove(from, to):删除指定范围的文本。
Replace(from, to, value):用给定的值替换掉指定范围内的文本。这可以改变文本的长度。
WriteText(text):类似于AppendText(),只是写入的文本被放置在当前的插入点。

  4、使用 多行 或 丰富的文本样式

wx.HSCROLL:如果文本控件是多行的,并且如果该样式被声明了,那么长的行将不会自动换行,并显示水平滚动条。该选项在GTK+中被忽略。
wx.TE_AUTO_URL:如果丰富文本选项被设置并且平台支持的话,那么当用户的鼠标位于文本中的一个URL上或在该URL上敲击时,这个样式将导致一个事件被生成。
wx.TE_DONTWRAP:wx.HSCROLL的别名。
wx.TE_LINEWRAP:对于太长的行,以字符为界换行。某些操作系统可能会忽略该样式。
wx.TE_MULTILINE:文本控件将显示多行。
wx.TE_RICH:用于Windows下,丰富文本控件用作基本的窗口部件。这允许样式文本的使用。
wx.TE_RICH2:用于Windows下,把最新版本的丰富文本控件用作基本的窗口部件。
wx.TE_WORDWRAP:对于太长的行,以单词为界换行。许多操作系统会忽略该样式。

  5、在 wx.TextCtrl 窗口部件中的 文本样式类(wx.TextAttr 类)

    构造函数:

    wx.TextAttr(colText, colBack=wx.NullColor, font=wx.NullFont)

    colText:字体颜色

    colBack:背景色

    font:字体

    文本色和背景色为wxPython对象,可由颜色名或颜色的RGB值(红,绿,蓝)来 指定。NullColor和NullFont都表示当前的默认值。

    wx.TextAttr 类的方法:

#wx.TextAttr的方法:
GetBackgroundColour()
GetFont()
GetTextColour()
HasBackgroundColour()
HasFont()
HasTextColour()
#wx.TextAttr的实例是不可变的,如果要改变文本的样式,必须创建新的实例。
#如果要使用文本样式,就要调用textCtrl的SetDefaultStyle(style)或者SetStyle(start,end,style)

  6、wx.TextCtrl类 的一些实用的方法:

GetDefaultStyle()
SetDefaultStyle(style)#上面已作了说明。
GetLineLength(lineNo)#返回给定行的长度的整数值。
GetLineText(lineNo)#返回给定行的文本。
GetNumberOfLines()#返回控件中的行的数量。对于单行,返回1。
IsMultiLine()
IsSingleLine()#布尔类型的方法,确定控件的状态。
PositionToXY(pos)#指定文本内的一个整数值位置,返回以元组(列,行)形式的索引位置。列和行的索引值均以0作为开始。
SetStyle(start, end,style)#立即改变指定范围内文本的样式。
ShowPosition(pos)#引起一个多行控件的滚动,以便观察到指定位置的内容。
XYToPosition(x, y)#与PositionToXY(pos)相反——指定行和列,返回整数值位置。

  7、响应文本事件:

    绑定事件时我们需要用到 .Bind()函数。其构造函数:

    frame.Bind(事件类型, frame.OnText, text)

    其中事件类型有:

EVT_TEXT:当控件中的文本改变时产生该事件。文本因用户的输入或在程序中使用SetValue()而被改变,都要产生该事件。
EVT_TEXT_ENTER:当用户在一个wx.TE_PROCESS_ENTER样式的文本控件中按下了回车键时,产生该事件。
EVT_TEXT_URL:如果在Windows系统上,wx.TE_RICH或wx.TE_RICH2样式被设置了,并且wx.TE_AUTO_URL样式也被设置了,那么当在文本控件内的URL上发生了一个鼠标事件时,该事件被触发。
EVT_TEXT_MAXLEN:如果使用SetMaxLength()指定了该控件的最大长度,那么当用户试图输入更长的字符串时,该事件被触发。你可能会用这个,例如,这时给用户显示一个警告消息。

3、感想

  编辑框组件本身运用起来比较简单,但是一般要配合 布局管理器(wx.BoxSizer 类) 和 标签(wx.StaticText 类) 相结合运用。

  参考资料 : http://justcoding.iteye.com/blog/914125

4、运行效果

  

5、样例代码

  PS:本代码可以体现  编辑框(本文所讲内容)的常用内容  与 布局管理器(wx.BoxSizer 类) 和 标签(wx.StaticText 类)简单运用

 #coding:utf-8
#author:Twobox import wx class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title) #在 窗口框架 上创建一个 面板
panel = wx.Panel(self) #创建 垂直尺寸管理器 : 用来管理接下来的 水平管理器 和 其他组件
vbox = wx.BoxSizer(wx.VERTICAL) #创建 水平管理器 hbox1、标签、普通编辑框(绑定 内容更改 事件) , 并把后二者放到 hbox1 上
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
stctext1 = wx.StaticText(panel, id = -1, label = "文本框:")
self.t1 = wx.TextCtrl(panel)
self.t1.Bind(wx.EVT_TEXT, self.OnKeyTyped)
hbox1.Add(stctext1, proportion = 0, flag = wx.EXPAND|wx.ALL, border = 5)
hbox1.Add(self.t1, proportion = 1, flag = wx.EXPAND|wx.ALL, border = 5) #创建 水平管理器 hbox2、标签、密码编辑框(设置对大长度为6)(绑定 文本长度超限制 事件) , 并把后二者放到 hbox2 上
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
stcText2 = wx.StaticText(panel, id = -1, label = "密码框:")
self.t2 = wx.TextCtrl(panel, style = wx.TE_PASSWORD)
self.t2.SetMaxLength(6)
self.t2.Bind(wx.EVT_TEXT_MAXLEN, self.OnMaxLen)
hbox2.Add(stcText2, proportion = 0, flag = wx.EXPAND|wx.ALL, border = 5)
hbox2.Add(self.t2, proportion = 1, flag = wx.EXPAND|wx.ALL, border = 5) # 创建 水平管理器 hbox3、标签、只读编辑框 , 并把后二者放到 hbox3 上
hbox3 = wx.BoxSizer(wx.HORIZONTAL)
stcText4 = wx.StaticText(panel, id = -1, label = "只读框:")
self.t4 = wx.TextCtrl(panel, style = wx.TE_READONLY|wx.TE_CENTER, value = "我是只读文本框")
hbox3.Add(stcText4, proportion = 0, flag = wx.EXPAND|wx.ALL, border = 5)
hbox3.Add(self.t4, proportion = 1, flag = wx.EXPAND|wx.ALL, border = 5) #将 hbox1 、 hbox2 、hbox3 添加到 vbox 上
vbox.Add(hbox1, proportion=0, flag=wx.EXPAND | wx.ALL, border=0)
vbox.Add(hbox2, proportion=0, flag=wx.EXPAND | wx.ALL, border=0)
vbox.Add(hbox3, proportion=0, flag=wx.EXPAND | wx.ALL, border=0) #创建 标签、多行文本框(绑定 按回车键 事件) , 并把这二者放到 vbox上
stcText3 = wx.StaticText(panel, id = -1, label = "多行文本框", style = wx.ALIGN_CENTER)
self.t3 = wx.TextCtrl(panel, style = wx.TE_MULTILINE)
self.t3.Bind(wx.EVT_TEXT_ENTER, self.OnEnterPressed)
vbox.Add(stcText3, proportion = 0, flag = wx.EXPAND|wx.ALL, border = 5)
vbox.Add(self.t3, proportion = 1, flag = wx.EXPAND|wx.ALL, border = 5) #设置 面板 panel 的尺寸管理器为 vbox
panel.SetSizer(vbox) #调整 窗口框架 并显示
self.SetSize((350,500))
self.Center()
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") def main():
app = wx.App()
Mywin(None, "编辑框样例")
app.MainLoop() if __name__ == '__main__':
main()

2017-08-21 17:09:54 ->2017-08-21 17:45:14

[Python] wxPython 编辑框组件学习总结 (原创)的更多相关文章

  1. [Python] wxPython 状态栏组件、消息对话框组件 学习总结(原创)

    1.状态栏组件 1.基本介绍 上图: 红框框内的就是状态栏. 他可以分成若干个区块,比如上者分为了两个区块,并且比例是固定的,创建时可以指定 每个区块都能够显示 信息,一般通过 绑定事件 实时更新 各 ...

  2. [Python] wxPython 菜单栏控件学习总结(原创)

    1.总结 1.大体创建过程 1.创建一个 菜单栏  : menuBar = wx.MenuBar() 相当于这个白色地方,没有File这个菜单 2.创建 菜单 : fileMenu = wx.Menu ...

  3. 2.Android之按钮Button和编辑框EditText学习

    今天学习android一些基本控件:button和edittext使用,我们平时网页或者手机登录一般都会有登录框,这里面就用到这两个部件. 如图: 所对应XML文件: 一般第二个编辑框都是输入密码,所 ...

  4. 家庭版记账本app进度之编辑框组件

    <EditText>中设置提示信息是用到的语句是android:hint来进行提示语句的书写. android:inputType可以将此编辑框设置为输入密码的编辑框(现实的是小黑点) a ...

  5. 第二百四十节,Bootstrap巨幕页头缩略图和警告框组件

    Bootstrap巨幕页头缩略图和警告框组件 学习要点: 1.巨幕组件 2.页头组件 3.缩略图组件 4.警告框组件 本节课我们主要学习一下 Bootstrap 的四个组件功能:巨幕组件.页头组件.缩 ...

  6. 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件

    jQuery EasyUI,ComboTree(树型下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解EasyUI中ComboTree(树型下拉框)组件的使用方法,这个 ...

  7. 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件

    jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...

  8. 第二百一十二节,jQuery EasyUI,Combo(自定义下拉框)组件

    jQuery EasyUI,Combo(自定义下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Combo(自定义下拉框)组件的使用方 ...

  9. 第二百一十一节,jQuery EasyUI,ValidateBox(验证框)组件

    jQuery EasyUI,ValidateBox(验证框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 4.自定义验证 本节课重点了解 EasyUI 中 ValidateBox(验证框 ...

随机推荐

  1. [图形学] 计算机图形学 with OpenGL开篇

    <计算机图形学>(第四版)正在学习中,学习目的是为了在Unity中使用shader实现不同的渲染效果. 希望在这里能把学习过程中学到的知识和遇到的问题记录下来. 工作环境是:Xcode 8 ...

  2. VB6之ICMP实现ping功能

    代码备忘 'code by lichmama from cnblogs.com Private Type IPAddr ip1 As Byte ip2 As Byte ip3 As Byte ip4 ...

  3. Spring IOC bean加载过程

    首先我们不要在学习Spring的开始产生畏难情绪.Spring没有臆想的那么高深,相反,它帮我们再项目开发中制定项目框架,简化项目开发.它的主要功能是将项目开发中繁琐的过程流程化,模式化,使用户仅在固 ...

  4. 合格的IT人士需要养成的习惯:设置系统还原点

    系统还原可帮助您将计算机的系统文件及时还原到早期的还原点.此方法可以在不影响个人文件(比如电子邮件.文档.照片等)的情况下,撤销对计算机的系统更改.有时,安装一个程序或驱动程序会导致对计算机的异常更改 ...

  5. 如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)

    数据共享是 volume 的关键特性,本节我们详细讨论通过 volume 如何在容器与 host 之间,容器与容器之间共享数据. 容器与 host 共享数据 我们有两种类型的 data volume, ...

  6. 代码托管SVN到Git迁移(使用小乌龟工具)

    1.环境信息 Git   Server     华为软件开发云   代码托管 SVN Server    本地SVN服务器   Windows Server2012 R2 本地主机       Win ...

  7. css3-transition过渡属性

    transition主要是用于一个元素的一种状态到另一种状态的一个过渡的过程,不能够主动触发,必须依赖于事件,例如hover伪类选择器. 一,transition简写 transition:要过渡的属 ...

  8. PHP中通过sqlsrv调用存储过程——成绩排名去除重复字段的数据行

    培训考试项目中,需要实现考试成绩排名:排名参考项为分数(score降序).参加日期(attendtime升序).第几次参加考试(frequency升序):并且,每个用户只保留一条数据(pid). 考试 ...

  9. 故障公告:docker swarm集群“群龙无首”引发部分站点无法访问

    今天傍晚 17:38-18:18 左右,由于 docker swarm 集群出现 "The swarm does not have a leader" 问题,造成博问.闪存.园子. ...

  10. python自动化运维:系统基础信息模块

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 第一章: 首先介绍下系统性能信息模块:psutil psutil能够轻松实现获取系统 ...