文本小部件相关
文本输入框使用 wx.TextCtrl()
类来创建
此类 __init__()
方法的参数
- parent -- 父窗口
- id -- 窗口ID
- pos -- 文本控件的初始位置
- size -- 文本控件的初始大小
- style -- 文本控件样式
- validator -- 窗口验证器
- name -- 窗口名称
源码
import wx
class WxWindow(wx.Frame):
def __init__(self,parent,title,name):
wx.Frame.__init__(self,parent=parent,title=title,name=name)
wx.TextCtrl(self) #创建一个文本输入框(不传递任何参数)
self.Show(True)
app = wx.App(False)
window = WxWindow(None,'窗口标题')
app.MainLoop()
运行结果
单行输入
从上面可以看出新添加的文本输入框有点怪怪的,是吧。为什么我们输入的字符总是在第一行?
这个问题可以通过设置 控件的样式来解决,也就是给 style 参数传递值,那传递什么值呢?答案是 wx.TE_MULTILINE ,这样就可以多行输入了。
import wx
class WxWindow(wx.Frame):
def __init__(self,parent,title,name):
wx.Frame.__init__(self,parent=parent,title=title,name=name)
wx.TextCtrl(self,style=wx.TE_MULTILINE) #创建一个文本输入框(向style传递参数,使其支持多行输入)
self.Show(True)
app = wx.App(False)
window = WxWindow(None,'窗口标题','MainWindow')
app.MainLoop()
运行结果
多行输入
小纠结
TE_MUTILINE 的值是 32 (这是我在我个人笔记本 Win10 上测得的,不排除其他值的可能,你可以直接打印查看),用 32 代替 TE_MULTILINE 也是可以的,但为了程序的兼容性(如果wx更新后TE_MULTILINE这个常量变了,那你的程序。。。是吧),还是使用TE_MULTILINE 吧,哪怕英文水到不行。
网友评论