zoukankan      html  css  js  c++  java
  • wxPython控件学习之wx.TextCtrl

    wx.TextCtrl的构造函数

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

    ---------------------------------------------------

    parent:父窗口部件

    id:标识符。使用-1可以自动创建一个唯一的标识。

    value:显示的内容

    pos:一个wx.Point或一个Python元组,它是窗口部件的位置。

    size:一个wx.Size或一个Python元组,它是窗口部件的尺寸。

    style:样式标记

    validator:赋予textctrl的内容校验器

    name:对象的名字,用于查找的需要。

    ---------------------------------------------------

    其中基本样式的取值有:

    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:控件中的文本右对齐。
    #-------------------------------------------------------------------------------
    # Name:        TextCtrlExampleFrame
    # Purpose:
    #
    # Author:      ankier
    #
    # Created:     17/09/2012
    # Copyright:   (c) ankier 2012
    # Licence:     <your licence>
    #-------------------------------------------------------------------------------
    
    import wx
    
    class TextCtrlExampleFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, wx.ID_ANY, \
             "Text ctrl example", pos =(0,0), size =(800, 600))
            panel = wx.Panel(self, -1)
    
            #输入文本居中对齐
            text = wx.TextCtrl(panel, wx.ID_ANY,pos=(0,30), size =(200, 20), style = wx.TE_CENTER)
    
            #显示密码文本框
            text = wx.TextCtrl(panel, wx.ID_ANY, pos=(0,60), size =(200, 20), style = wx.TE_PASSWORD)
    
            #显示只读文本
            text = wx.TextCtrl(panel, wx.ID_ANY, pos=(0,90), size =(200, 20), style = wx.TE_READONLY)
    
    
    def main():
        app = wx.PySimpleApp()
        frame = TextCtrlExampleFrame()
        frame.Show(True)
        app.MainLoop()
    
    if __name__ == '__main__':
        main()

    多行或丰富文本样式有

    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:对于太长的行,以单词为界换行。许多操作系统会忽略该样式。
    #-------------------------------------------------------------------------------
    # Name:        TextCtrlExampleFrame
    # Purpose:
    #
    # Author:      ankier
    #
    # Created:     17/09/2012
    # Copyright:   (c) ankier 2012
    # Licence:     <your licence>
    #-------------------------------------------------------------------------------
    
    import wx
    
    class TextCtrlExampleFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, wx.ID_ANY, \
             "Text ctrl example", pos =(0,0), size =(800, 600))
            panel = wx.Panel(self, -1)
    
            #多行文本样式
            text = wx.TextCtrl(panel, wx.ID_ANY,pos=(0,70), size =(200, 60), style = wx.TE_MULTILINE)
    
            #window下富文本
            text = wx.TextCtrl(panel, wx.ID_ANY,pos=(0,140), size =(200, 60), style = wx.TE_RICH)
    def main():
        app = wx.PySimpleApp()
        frame = TextCtrlExampleFrame()
        frame.Show(True)
        app.MainLoop()
    
    if __name__ == '__main__':
        main()

    编程下改变文本内容方式有:

    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(),只是写入的文本被放置在当前的插入点。
    #-------------------------------------------------------------------------------
    # Name:        TextCtrlExampleFrame
    # Purpose:
    #
    # Author:      ankier
    #
    # Created:     17/09/2012
    # Copyright:   (c) ankier 2012
    # Licence:     <your licence>
    #-------------------------------------------------------------------------------
    
    import wx
    
    class TextCtrlExampleFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, wx.ID_ANY, \
             "Text ctrl example", pos =(0,0), size =(800, 600))
            panel = wx.Panel(self, -1)
    
            #多行文本样式
            self.text = wx.TextCtrl(panel, wx.ID_ANY,pos=(70, 0), size =(200, 60), style = wx.TE_MULTILINE)
            button = wx.Button(panel, wx.ID_ANY, pos = (210, 70), size =(100, 20), label = 'Append')
            button.Bind(wx.EVT_BUTTON, self.__OnAppendButtonClick)
            button = wx.Button(panel, wx.ID_ANY, pos = (110, 70), size =(60, 20), label = 'Clear')
            button.Bind(wx.EVT_BUTTON, self.__OnClearClick)
    
        def __OnAppendButtonClick(self, event):
            self.text.AppendText("appended text")
    
        def __OnClearClick(self, event):
            self.text.Clear()
    
    
    def main():
        app = wx.PySimpleApp()
        frame = TextCtrlExampleFrame()
        frame.Show(True)
        app.MainLoop()
    
    if __name__ == '__main__':
        main()

    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)相反——指定行和列,返回整数值位置。

    响应文本事件:
     
    1. frame.Bind(wx.EVT_TEXT, 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()指定了该控件的最大长度,那么当
    用户试图输入更长的字符串时,该事件被触发。你可能会用这个,例如,这时给用户
    显示一个警告消息。

     

  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/ankier/p/2689364.html
Copyright © 2011-2022 走看看