WxPython -- 个人笔记

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

2018-09-23  本文已影响0人  MangfuStudio

文本小部件相关

文本输入框使用 wx.TextCtrl() 类来创建
此类 __init__() 方法的参数

源码

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 吧,哪怕英文水到不行。

上一篇 下一篇

猜你喜欢

热点阅读