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()
运行结果
单行输入

从上面可以看出新添加的文本输入框有点怪怪的,是吧。为什么我们输入的字符总是在第一行?
这个问题可以通过设置 控件的样式来解决,也就是给 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 吧,哪怕英文水到不行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,026评论 3 119
  • 克莱顿:他们大都将职业生涯当成一场短跑比赛,然而事实上,这是一场至少长达45年的马拉松。他们更关心下周二的升职加薪...
    千淘萬漉阅读 14,777评论 4 23
  • 你轻柔的声音环绕在我的耳畔 我伤感的蛀虫便不再草长莺飞 你温暖的双手抚摸我的额头 我身体的疼痛便如秋叶般开始坠落 ...
    默默huangjuan阅读 297评论 8 6
  • 最近不知怎的特别想写点什么来述说我的第一份工作经历(也是目前唯一的一份工作经历),大致是想把自己这短短2...
    倔强的倔强阅读 557评论 8 6
  • 世间的事很奇妙,你不知道它会以怎样的方式在怎样的情景中传入你的耳朵。 今天坐火车去外地。 或许是始发站的原因,偌大...
    东方地秀阅读 338评论 6 7