class StaticTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Static Text Example',
size=(400, 300))
panel = wx.Panel(self, -1)
st1 = wx.StaticText(panel,-1,"Basic Control:")
t1 = wx.TextCtrl(panel,-1,"I’ve entered some text!",size=(150,-1))
t1.SetInsertionPoint(0)
st2 = wx.StaticText(panel, -1, "Password:")
t2 = wx.TextCtrl(panel, -1, "”password", size=(150, -1),style=wx.TE_PASSWORD)
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
sizer.AddMany([st1, t1, st2, t2])
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = StaticTextFrame()
frame.Show()
app.MainLoop()
wx.TextCtrl类参数:
wx.TextCtrl(parent, id, value = ””, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, validator=wx.DefaultValidator name=wx.TextCtrlNameStr)
参数parent, id, pos, size, style, 和 name与wx.Window构造函数的相同。
value 是显示在该控件中的初始文本。
validator参数用于一个wx.Validator。validator通常用于过虑数据以确保只能 键入要接受的数据(数据约束参考https://blog.csdn.net/ygdxt/article/details/89238491)
单行文本样式
wx.TE_CENTER:控件中的文本居中
wx.TE_LEFT:控件中的文本左对齐。默认
wx.TE_RIGHT:控件中的文本右对齐。
wx.TE_NOHIDESEL:文本始终高亮显示,只适用于Windows。
wx.TE_PASSWORD:不显示所键入的文本,代替以星号显示。
wx.TE_PROCESS_ENTER:如果使用了这个样式,那么当用户在控件内按下回车 键时,一个文本输入事件被触发。
wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在Tab键按下 时创建(一般意味一个制表符将被插入文本)。否则,tab由对话框来管理,通常是 控件间的切换。
wx.TE_READONLY:文本控件为只读,用户不能修改其中的文本。
多行文本样式
wx.TE_LINEWRAP:对于太长的行,以字符为界换行。某些操作系统可能会忽略该 样式
wx.TE_MULTILINE:文本控件将显示多行
wx.TE_WORDWRAP:对于太长的行,以单词为界换行。许多操作系统会忽略该样 式。
常用出来文本的方法
AppendText(text):在尾部添加文本。
WriteText(text):类似于AppendText(),只是写入的文本被放置在当前的插入点
Clear():重置控件中的文本为“”。并且生成一个文本更新事件。
SetValue(value):改变控件中的全部文本。
GetValue()返回控件中所有的 字符串。
Remove(from, to):删除指定范围的文本。
GetLineText(lineNo):返回给定行的文本。(多行文本下)
GetNumberOfLines():返回控件中的行的数量。对于单行,返回1。
响应文本事件
有一个由wx.TextCtrl窗口部件产生的便利的命令事件,你可能想用它。你 需要把相关事件传递给Bind方法以捕获该事件,如下所示
frame.Bind(wx.EVT_TEXT, frame.OnText, text)
EVT_TEXT:当控件中的文本改变时产生该事件。文本因用户的输入或在程序中使 用SetValue()而被改变,都要产生该事件
注:文章摘自《wxPython in Action》