wx.TextCtrl(parent, id, value, pos, size, style)
樣式(style)引數接受一個或多個常數,如下列表 −
S.N. | 引數&描述 |
---|---|
1 |
wx.TE_MULTILINE 文字控制元件允許多行。如果未指定該樣式(style),換行字元不應該在控制元件值中使用。 |
2 |
wx.TE_PASSWORD
文字將回顯為星號
|
3 |
wx.TE_READONLY
文字將不可編輯
|
4 |
wxTE_LEFT
在控制元件中的文字將左對齊(預設)
|
5 |
wxTE_CENTRE
在控制元件中的文字將居中對齊
|
6 |
wxTE_RIGHT
在控制元件中的文字將居右對齊
|
wx.TextCtrl類的重要方法。
S.N. | 事件&描述 |
---|---|
1 |
EVT_TEXT
響應變化的文字框的內容,或者通過手動鍵入,或以程式設計方式
|
2 |
EVT_TEXT_ENTER
呼叫相關的處理程式當Enter鍵在文字框中按下
|
3 |
EVT_TEXT_MAXLEN
只要文字長度進入觸發相關處理程式達到SetMaxLength()函式的值
|
self.t1 = wx.TextCtrl(panel) self.t2 = wx.TextCtrl(panel,style = wx.TE_PASSWORD) self.t3 = wx.TextCtrl(panel,size = (200,100),style = wx.TE_MULTILINE) self.t4 = wx.TextCtrl ( panel, value = "ReadOnly Text", style = wx.TE_READONLY | wx.TE_CENTER )
第一個框 EVT_TEXT 係結器觸發 OnKeyTyped()方法可以處理每個擊鍵。第二個框它的最大長度為5。一旦使用者試圖輸入超過500個字元,EVT_TEXT_MAXLEN 係結器傳送執行OnMaxLen()函式。多行文字框響應確認鍵按下,因為EVT_TEXT_ENTER系結器。
import wx class Mywin(wx.Frame): def __init__(self, parent, title): super(Mywin, self).__init__(parent, title = title,size = (350,250)) panel = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) hbox1 = wx.BoxSizer(wx.HORIZONTAL) l1 = wx.StaticText(panel, -1, "文字域") hbox1.Add(l1, 1, wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5) self.t1 = wx.TextCtrl(panel) hbox1.Add(self.t1,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5) self.t1.Bind(wx.EVT_TEXT,self.OnKeyTyped) vbox.Add(hbox1) hbox2 = wx.BoxSizer(wx.HORIZONTAL) l2 = wx.StaticText(panel, -1, "密碼文字") hbox2.Add(l2, 1, wx.ALIGN_LEFT|wx.ALL,5) self.t2 = wx.TextCtrl(panel,style = wx.TE_PASSWORD) self.t2.SetMaxLength(5) hbox2.Add(self.t2,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5) vbox.Add(hbox2) self.t2.Bind(wx.EVT_TEXT_MAXLEN,self.OnMaxLen) hbox3 = wx.BoxSizer(wx.HORIZONTAL) l3 = wx.StaticText(panel, -1, "多行文字") hbox3.Add(l3,1, wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5) self.t3 = wx.TextCtrl(panel,size = (200,100),style = wx.TE_MULTILINE) hbox3.Add(self.t3,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5) vbox.Add(hbox3) self.t3.Bind(wx.EVT_TEXT_ENTER,self.OnEnterPressed) hbox4 = wx.BoxSizer(wx.HORIZONTAL) l4 = wx.StaticText(panel, -1, "唯讀取文字") hbox4.Add(l4, 1, wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5) self.t4 = wx.TextCtrl(panel, value = "唯讀文字",style = wx.TE_READONLY|wx.TE_CENTER) hbox4.Add(self.t4,1,wx.EXPAND|wx.ALIGN_LEFT|wx.ALL,5) vbox.Add(hbox4) panel.SetSizer(vbox) self.Centre() 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" app = wx.App() Mywin(None, 'TextCtrl範例-www.tw511.com') app.MainLoop()