WxPython -- 第三篇文章 -- 给空窗口添加一个文本输入小部件


文本小部件相关

文本输入框使用 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()
运行结果
WxPython -- 第三篇文章 -- 给空窗口添加一个文本输入小部件_第1张图片
单行输入

从上面可以看出新添加的文本输入框有点怪怪的,是吧。为什么我们输入的字符总是在第一行?
这个问题可以通过设置 控件的样式来解决,也就是给 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()
运行结果
WxPython -- 第三篇文章 -- 给空窗口添加一个文本输入小部件_第2张图片
多行输入

小纠结

TE_MUTILINE 的值是 32 (这是我在我个人笔记本 Win10 上测得的,不排除其他值的可能,你可以直接打印查看),用 32 代替 TE_MULTILINE 也是可以的,但为了程序的兼容性(如果wx更新后TE_MULTILINE这个常量变了,那你的程序。。。是吧),还是使用TE_MULTILINE 吧,哪怕英文水到不行。

你可能感兴趣的:(WxPython -- 第三篇文章 -- 给空窗口添加一个文本输入小部件)