wxPython控制項學習之wx.TextCtrl

來源:互聯網
上載者:User

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 wxclass 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 wxclass 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 wxclass 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()指定了該控制項的最大長度,那麼當使用者試圖輸入更長的字串時,該事件被觸發。你可能會用這個,例如,這時給使用者顯示一個警告訊息。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.