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)相反——指定行和列,返回整數值位置。
響應文本事件:
- 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()指定了該控制項的最大長度,那麼當使用者試圖輸入更長的字串時,該事件被觸發。你可能會用這個,例如,這時給使用者顯示一個警告訊息。