wxPython中TextCtrl的输入上限问题
发布日期:2021-05-04 02:14:10 浏览次数:9 分类:技术文章

本文共 1694 字,大约阅读时间需要 5 分钟。

最近用wxPython写了个简单的GUI程序,在实际使用过程中遇到个问题:wxPython的控件TextCtrl默认是有输入上限的。这里就简单讲述一下这个坑及解决办法,wxPython版本是4.0.4。


一 TextCtrl控件简介

TextCtrl就是输入框,可以输入和编辑其中的内容,下面是简单的程序,用来显示TextCtrl,

import wxapp = wx.App()frame = wx.Frame(None, wx.ID_ANY, "GUI", size=(300, 300))panel = wx.Panel(frame, wx.ID_ANY)textCtrl = wx.TextCtrl(panel, wx.ID_ANY, pos=(50, 20), size=(200, 200), style=wx.TE_MULTILINE)if __name__ == '__main__':	frame.Show(True)	app.MainLoop()

显示如下,

在这里插入图片描述


二 TextCtrl的输入上限及解决办法

实际使用时,需要输入一个100kb的文件,拷贝输入进去后,发现后半段数据没有出现,使用win10自带的记事本打开一个文件并拷贝,却没有问题。于是查了wxPython的API文档,发现TextCtrl有个事件叫EVT_TEXT_MAXLEN,其描述如下,

EVT_TEXT_MAXLEN: This event is generated when the user tries to enter more text into the control than the limit set by wx.TextCtrl.SetMaxLength , see its description.

意思是当用户输入的文本字符数超过了wx.TextCtrl.SetMaxLength设置的上限,就会触发这个事件。

再去看下wx.TextCtrl.SetMaxLength的描述,

SetMaxLength(self, len)

This function sets the maximum number of characters the user can enter into the control.
In other words, it allows limiting the text value length to len not counting the terminating NUL character.
If len is 0, the previously set max length limit, if any, is discarded and the user may enter as much text as the underlying native text control widget supports (typically at least 32Kb).

说实在的,这段英文语法还有点小难懂,看了好几遍才看懂,其意思是:如果len为0,那么之前设置的任何长度上限,都会被丢弃,这样用户可输入的数据量就由底层的原生文本控制widget来决定(典型值是至少32Kb)。

所以只要把len设置为0就可以了,这里说的底层的原生文本控制widget应该和记事本使用的控件是一样的。所以前面代码更改如下,

textCtrl = wx.TextCtrl(panel, wx.ID_ANY, pos=(50, 20), size=(200, 200), style=wx.TE_MULTILINE)textCtrl.SetMaxLength(0)

这样就可以解决这个问题了。


三 总结

本文主要讲述wxPython中TextCtrl的输入上限问题,还好wxPython的文档比较清楚,所以也比较容易debug

另外,很推荐wxPython 4.0版本,轻量而且清晰,文档也非常好,学习起来也很容易上手。

如果有写的不对的地方,希望能留言指正,谢谢阅读。

上一篇:使用openssl生成自签名证书
下一篇:使用Python3简单运行CGI Web Server

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月22日 09时45分15秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

2021年低压电工考试及低压电工考试申请表 2019-03-03
2021年低压电工考试及低压电工考试申请表 2019-03-03
2021年低压电工考试及低压电工考试申请表 2019-03-03
2021年低压电工考试APP及低压电工作业模拟考试 2019-03-03
2021年A特种设备相关管理(电梯)考试APP及A特种设备相关管理(电梯)复审考试 2019-03-03
2021年美容师(初级)考试报名及美容师(初级)新版试题 2019-03-03
2021年N1叉车司机考试题及N1叉车司机复审模拟考试 2019-03-03
2021年R2移动式压力容器充装考试试卷及R2移动式压力容器充装考试技巧 2019-03-03
2021年危险化学品经营单位主要负责人考试APP及危险化学品经营单位主要负责人多少钱 2019-03-03
2021年T电梯修理考试技巧及T电梯修理模拟考试软件 2019-03-03
2021年电工(初级)考试及电工(初级)报名考试 2019-03-03
2021年R2移动式压力容器充装考试题及R2移动式压力容器充装找答案 2019-03-03
2021年高处安装、维护、拆除考试资料及高处安装、维护、拆除证考试 2019-03-03
2021年电工(初级)考试及电工(初级)证考试 2019-03-03
2021年安全员-B证-项目负责人(广东省)新版试题及安全员-B证-项目负责人(广东省)考试试卷 2019-03-03
2021年R2移动式压力容器充装考试总结及R2移动式压力容器充装模拟考试 2019-03-03
2021年安全员-B证(山东省)找解析及安全员-B证(山东省)考试总结 2019-03-03
2021年安全员-B证(山东省)考试APP及安全员-B证(山东省)考试技巧 2019-03-03
2021年安全员-A证-主要负责人(广东省)复审考试及安全员-A证-主要负责人(广东省)操作证考试 2019-03-03
2021年安全员-A证(山东省)考试题及安全员-A证(山东省)报名考试 2019-03-03