范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

wxPython基本控件之文本输入控件TextCtrl

  实战wxPython系列-033
  文本控件wx.TextCtrl是用来显示和编辑文本的控件,它支持单行和多行的文本编辑。在某些平台上,支持给文本控件中的文本设置一些简单的格式和风格。
  一、wx.TextCtrl简介
  wx.TextCtrl文本格式
  在多行文本的情况下, wx.TextCtrl总是将文本存储为以’ ’字符分隔成多行文本序列( 就是说即使在非Unix平台上也以Unix文本格式存储)。这样做的好处是允许用户代码忽略平台之间的差异,但同时也付出一定的代价是控件中的索引问题。例如由GetInsertionPoint或GetSelection返回的索引,不能用作GetValue返回的字符串的索引,因为对于使用"rn"作为分隔符的平台(如Windows),它们将略微偏离。反之,如果需要在上述函数的帮助下从控件中获得两个索引之间的一个子字符串,则应该使用GetRange,索引本身只能传递给其他方法,例如SetInsertionPoint或SetSelection。总之,在多行样式下,不要使用wx.TextCtrl返回的索引值来获取索引所包含的字符串,该索引值仅作为参数传递给其他的wx.TextCtrl方法。
  对于单行文本的情况下,控件中的索引确实对应于值字符串中的位置。
  wx.TextCtrl文本样式
  在多行文本的情况下, wx.TextCtrl提供了为其中单个字符设置字体和颜色的功能(注:在Windows下TE_RICH样式下需要这样的文本样式支持)。使用这些样式的方法是,在插入文本之前先调用SetDefaultStyle方法,或者在之后调用SetStyle来更改控件的文本样式。在这两种情况下,如果样式没有指定某些属性(例如,如果只想设置文本颜色,不更改字体和文本背景),则将使用默认样式的值。如果没有默认样式,则使用文本控件本身的属性。
  下面的代码演示了如何使用SetDefaultStyle来改变文本样式:text.SetDefaultStyle(wx.TextAttr(wx.RED)) text.AppendText("Red text ") text.SetDefaultStyle(wx.TextAttr(wx.NullColour, wx.LIGHT_GREY)) text.AppendText("Red on grey text ") text.SetDefaultStyle(wx.TextAttr(wx.BLUE)) text.AppendText("Blue on grey text ")
  wx.TextCtrl窗口样式wx.TE_PROCESS_ENTER:控件将生成事件wx.EVT_TEXT_ENTER,该事件可以由程序处理。如果未指定这个样式,按Enter键要么由控件内部处理,要么用于激活对话框的默认按钮(如果有的话)。wx.TE_PROCESS_TAB:通常,TAB键用于键盘导航,在控制中按下它将焦点切换到下一个。设置这种样式后,如果没有对制表符进行其他处理(例如通过wx.EVT_CHAR事件处理程序),则将一个文本制表符插入控件中。wx.TE_MULTILINE:文本控件允许多行。如果未指定此样式,则不应在控件值中使用换行字符。wx.TE_PASSWORD:文本将以星号显示。wx.TE_READONLY:文本不可编辑。wx.TE_RICH:在MSW下使用富文本控件,这允许控件中有超过64KB的文本(这种样式仅适用于Windows)。wx.TE_RICH2:在MSW下使用富文本控制2.0或更高版本(这种样式仅适用于Windows)。wx.TE_AUTO_URL:突出显示url并在鼠标事件发生时生成TextUrlEvents。wx.TE_NOHIDESEL:默认情况下,文本控件在没有焦点时不显示所选内容,使用这个样式强制它始终显示它(这种样式仅适用于Windows)。wx.HSCROLL:将创建并使用水平滚动条,这样文本就不会被换行。wx.TE_NO_VSCROLL:仅用于多行控件,永远不会创建垂直滚动条。wx.TE_LEFT:控件中的文本将左对齐(默认值)。wx.TE_CENTRE:控件中的文本将居中。wx.TE_RIGHT:控件中的文本将右对齐。wx.TE_DONTWRAP:和wx.HSCROLL一样,文本不换行,显示水平滚动条来代替换行。wx.TE_CHARWRAP:仅适用于多行控件,如果文本太长,则在可能的位置进行字符回绕。wx.TE_WORDWRAP: 仅适用于多行控件,如果文本太长,则在可能的位置进行单词回绕。TE_CAPITALIZE:仅对于多行控件,在单词边界处换行,如果单词比窗口宽度长,则在任何其他字符处换行(这是默认值)。
  wx.TextCtrl发出的事件EVT_TEXT:响应一个wx.EVT_TEXT事件,当文本发生变化时生成。注意,当文本控件的内容发生变化时,这个事件将被发送。EVT_TEXT_ENTER:响应wx.EVT_TEXT_ENTER事件, 当文本控件设置了wx. TE_PROCESS_ENTER样式时,在文本控件中按下enter键时生成该事件EVT_TEXT_URL:鼠标事件发生在文本控件中的URL上时生成此事件。EVT_TEXT_MAXLEN:当用户试图在控件中输入比wx.TextCtrl.SetMaxLength设置的限制更多的文本时,将生成此事件。
  wx.TextCtrl常用方法
  文本控件wx.TextCtrl的许多方法都在类wx.TextEntry中(关于wx.TextEntry, 请参考前文" 基本控件之下拉列表框ComboBox"。DiscardEdits ( self ):重置内部修改标志,就像保存了当前更改一样。 EmptyUndoBuffer ( self ):删除undo历史记录(仅适用部分平台)。 EmulateKeyPress ( self ,  event ):本方法在文本控件中发生给定键事件时将插入的字符插入到控件中。 GetDefaultStyle ( self ):返回新文本当前使用的样式。 GetLineLength ( self ,  lineNo ):获取指定行的长度,不包括任何尾随换行符。 GetLineText ( self ,  lineNo ):返回文本控件中给定行的内容,不包括任何尾随换行符。 GetNumberOfLines ( self ):返回文本控件缓冲区中的行数。 GetStyle ( self ,  position ,  style ):返回文本控件中指定位置的样式(仅适用部分平台)。 HideNativeCaret ( self ):隐藏小部件的本机插入符号(仅适用Windows)。 HitTestPos ( self ,  pt ):查找字符在指定点上的位置。 HitTest ( self ,  pt ):查找字符在指定点的行和列。 IsModified ( self ):如果文本已被用户修改,则返回True。 IsMultiLine ( self ):如果是多行编辑控件则返回True,否则返回False。 IsSingleLine ( self ):如果是单行编辑控件则返回True,否则返回False。 LoadFile ( self ,  filename ,  fileType=TEXT_TYPE_ANY ):加载并显示文件(如果它存在)。 MarkDirty ( self ):将文本标记为已修改(dirty)。 PositionToCoords ( self ,  pos ):将给定的文本位置转换为以像素为单位的客户端坐标。本方法允许查找在文本控件中显示的给定位置上的字符的位置。 PositionToXY ( self ,  pos ):将给定位置转换为从零开始的列、行号对。 SaveFile ( self ,  filename="" ,  fileType=TEXT_TYPE_ANY ):将控件的内容保存在文本文件中。 SetDefaultStyle ( self ,  style ):更改将添加到控件的新文本所使用的默认样式。 SetModified ( self ,  modified ):标记控件内容是否已被用户修改。 SetStyle ( self ,  start ,  end ,  style ):更改给定范围的样式。如果没有设置style中的任何属性,则使用GetDefaultStyle中的相应属性。 ShowNativeCaret ( self ,  show=True ):显示小部件的本机插入符号(仅适用Windows)。 ShowPosition ( self ,  pos ):  使包含给定位置的行可见。XYToPosition ( self ,  x ,  y ):将给定的从零开始的列号和行号转换为一个位置。 flush ( self ):file-like兼容。 write ( self ,  text ):将文本添加到TextCtrl控件中,file-like兼容。
  图1:wx.TextCtrl类继承关系
  二、wx.TextCtrl演示
  下面的代码演示如何使用wx.TextCtrl。#文本编辑框(wx.TextCtrl)  import wx  class SampleTextCtrl(wx.Frame):      def __init__(self, *args, **kw):         super(SampleTextCtrl, self).__init__(*args, **kw)          self.InitUi()      def InitUi(self):         #设置标题         self.SetTitle("实战wxPython: TextCtrl演示")         #设置窗口尺寸         self.SetSize(480, 320)          panel = wx.Panel(self)          #单行文本         wx.StaticText(panel, label = "单行文本:", pos = (20, 10))         self.txtSingle = wx.TextCtrl(panel, wx.ID_ANY, pos = (100, 10), size = (260, 24))                  #多行文本         wx.StaticText(panel, label = "多行文本:", pos = (20, 50))         self.txtMulti = wx.TextCtrl(panel, wx.ID_ANY, pos = (100, 50), size = (260, 100), style = wx.TE_MULTILINE)          #富文本         wx.StaticText(panel, label = "富文本:", pos = (20, 160))         self.txtRich = wx.TextCtrl(panel, wx.ID_ANY, pos = (100, 160), size = (260, 100), style = wx.TE_RICH | wx.TE_MULTILINE)          #添加文本按钮         btnAppend = wx.Button(panel, label="添加", pos = (380, 10))         btnAppend.Bind(wx.EVT_BUTTON, self.OnAppendText)                  #清除文本按钮         btnClear = wx.Button(panel, label="清除", pos = (380, 236))         btnClear.Bind(wx.EVT_BUTTON, self.OnClearText)          self.Centre()      #将单行文本中输入的文字添加到多行和富文本编辑框中     def OnAppendText(self, e):         txt = self.txtSingle.GetValue()         if(len(txt) > 0):             self.txtMulti.AppendText(txt)             self.txtMulti.AppendText(" ")             self.txtRich.AppendText(txt)             self.txtRich.AppendText(" ")      def OnClearText(self, e):         self.txtSingle.Clear()         self.txtMulti.Clear()         self.txtRich.Clear()  def main():     app = wx.App()     sample = SampleTextCtrl(None)     sample.Show()     app.MainLoop()  if __name__ == "__main__":     main()
  上述代码演示了如何创建单文本编辑框,多文本编辑框和富文本编辑框,然后可以在单文本框中输入文本,点击"添加"按钮,将输入的文本追加到多文本编辑框和富文本编辑框中。点击"清除"按钮将清除所有文本框中的文本。
  图2:wx.TextCtrl演示
  三、本文知识点了解和使用wx.TextCtrl。了解在不同平台wx.TextCtrl实现的功能有差异。
  前一篇:wxPython - 基本控件之下拉列表框ComboBox
  请关注,评论,收藏,点赞,和转发。

武汉月薪18。4k是什么水平?武汉市的月薪分五档。一,最高档,富有阶层,12000元以上。占比,百分之五。二,中高档,中产阶层,900012000元。占比,百分之二十。三,中挡,小康阶层,60009000元。占九月份基金市场最值得投资的板块有哪些?从九月份的表现来看,上证指数已经开启了一波牛市的行情,虽然相应的创业板依然还处于低位,但是当前市场上,强者恒强的现象已经演绎的的如火纯青!对于九月份的方向,早在八月底小胖就已经提到想给5D4配个镜头,70400哪个更合适?你都有5D4了,还有24105镜头,就是想在70200和100400中间做一个选择,看看哪一支更合适。直接给你回答想主打人物拍摄则选70200主打飞禽走兽等则选100400假如是我自由职业交养老保险每年涨,到底是继续交好,还是存银行好?每一个人都需要一份养老保险,自由职业者缴纳养老保险,当然是越早越好。为什么要重视养老保险?养老问题,随着我国人均预期寿命的越来越长,真的是需要越来越重视了。随着我国实施养老保险制度未经业主委员会讨论,物业公司擅自调整物业费,业主可以拒缴吗?物业公司不符合中国国情,应当尽快取缔!可以拒付。严谨的说,即便经过了业主委员会讨论,也不能擅自提价。因为这个事情,它事关全体业主的公共管理权限,不是业委会这个组织和物业公司能决定的北京国企或者事业单位退休退休金能到8000吗?不一定,看看是不是什么类型的国企,当然国企也包含着央企,国企是普通类型的还是烟草,石油等垄断行业类型的都不一样,事业单位还需要看看退休前行政级别是什么等级?,有的可能达不到8000孩子的智商主要遗传自母亲的说法是否靠谱?智商和遗传没多大关系吧。我父母都是211大学的教授,住的宿舍区里的邻居也都是教授副教授的,但是这些知识分子的下一代,很少有能上清北的,上个985,211就算不错的了,也颇有些孩子连滑稽界历史上,李青的早年经历是怎样的?李青老师,有名笑星滑稽演员滑稽表演艺术家,双字辈有名滑稽戏独角戏表演艺术家滑稽名家。1951年拜张利音先生为师,拜了他先生以后,他就在1951年进了新生通俗话剧团,在龙门大戏院唱第相声历史上,说学逗唱四个领域最顶级的大师分别是谁?马三立的说,郭荣启的学,侯宝林的唱,常宝堃常宝霆的逗。这是相声界比较公认的一个榜单,也是这四个领域最有代表性的人物。马三立无人不宗马的说相声界之所以有无人不宗马这种说法,并不是说所越剧历史上,尹小芳有哪些故事?尹小芳老师,尹派传人越剧老艺术家有名越剧表演艺术家国家一级演员,越剧名家。一场史无前例的浩劫曾使她留下多种后遗症,但是在她辍演二十多年之后,毅然挑起发扬尹派艺术的重任,79年的演唱历史上为什么只有反清复明,明朝有什么值得留恋的呢?明朝到了晚期真的没有什么可以留恋的了,可清朝规矩更苛刻,要汉人全部剃成那种大辩子头,装束全部换成满装,对汉人实行文字狱,任意打压,屠杀,引起公愤,民间多地喊出反清复明的口号,对比才
在职场上才能高了怎么混?头条创作挑战赛才能与事业本是正比关系。但现实生活中,一些才高者反被高才所累,不仅事业上曲曲折折,而且生活上也坎坎坷坷。如何使自己在事业和生活上都能顺利,窃以为关键是妥善处理好以下几奥斯汀马刺官方球队已正式签下自由球员半兽人法里德直播吧11月13日讯马刺下属发展联盟球队奥斯汀马刺队官方今日宣布,球队已正式签下自由球员肯尼思法里德。法里德今年32岁,外号半兽人,是2011年的22号秀,曾随美国男篮夺得2014小卡赛季仅打两场!乔治这里没人会对他的复出施加压力直播吧11月13日讯今日NBA常规赛,快船在主场以95110不敌篮网。赛后,保罗乔治接受了媒体采访。谈到莱昂纳德,他说道当他做好准备复出的时候我会很兴奋。这里没有人会对他的复出施加训练师没骗人库里一点也不像34岁同期对比得分王赛季他还更强了作为勇士的绝对核心,库里自从杜兰特离开后,又重新找回了之前的进攻侵略性,上赛季他虽然在常规赛场均得分仅有25,不过到了季后赛,乃至之后的总决赛舞台,库里的场均得分都在不断攀升,和凯诸神黄昏C罗的世界杯谢幕推演足球助力团第一次参加世界杯,C罗那年21岁。在这之前,他已经获得了欧洲杯最佳阵容欧洲足联最佳阵容曼联俱乐部年度最佳进球英格兰职业球员联盟最佳阵容等重量级奖项,并两度拿下国际职业球员利好频频,意味着什么?子木昨天,地产股暴力拉涨。多家房企股票涨停,旭辉涨幅最高达到72,因涨势过猛,一度被监管停牌。开发商是B,居民是C,B对C有一定的连带作用。所以很多人问我,凉透半截的地产板块突然诈姜堰对接上海聚焦大健康产业签约38个重大项目揽资超163亿活动现场(乔梁丁明玥)11月11日,2022年姜堰(上海)大健康产业投资说明会暨堰归来同城英才汇在上海举行。本次活动现场集中签约大健康产业项目38个,计划总投资163。14亿元,涵房价还会涨的,只是时间问题大家不要灰心,房价肯定还会涨的,只是时间问题。不是现在挣钱难了,是以前挣到钱的人挣钱太容易了。只有掌握形势抓住机遇才会挣到钱,什么时候都是。现在到处都是反应市场经济不行的,老百姓能高科技公司破产卖楼,被疯狂小杨哥1亿元拍下,你有什么启发我们梳理下脉络科技公司欠债8400万卖楼,25岁抖音网红花1亿买下!本人回应不是我们把它干倒闭的高科技公司破产清算卖楼,抖音网红1亿买下!近日,抖音带货主播疯狂小杨哥1。03亿买下海信视像高刷游戏电视成市场增长利器前三季度领跑行业中证网讯(记者张鹏飞)继大屏和高画质之后,高刷正在成为彩电业追逐的第三个关键词,成为电视市场增长的又一利器。近日,奥维云网全渠道监测数据显示,2022年前三季度,120Hz及以上高加拿大鹅不香了?净利润暴跌六成,毛利率不如波司登加拿大鹅业绩惨淡随着双十一促销季的到来,羽绒服品类迎来了一年中最热闹的时刻,但飘摇过海而来的加拿大鹅却感受到阵阵寒意。11月2日,羽绒服品牌加拿大鹅(CanadaGoose)公布了