Python tkinter 输入组件的几个小问题总结

本文总结了使用Python tkinter库制作GUI程序时遇到的text和entry组件问题,包括组件定位、数据获取与计算、定时执行等方面。针对组件布局、获取空值、线程错误等常见问题给出了相应的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做企业微信和飞书的群webhook机器人,打算做一个桌面带UI的程序,也就是把py封装成exe

做的过程中几个关于tkinter小问题折腾了很久,总结一下,以供后来者参考。

同时也是对本次项目的总结。

一、组件定位问题

一开始只会写

text = tkinter.Text(root)
text.pack()

这样写了几个组件,发现只会按照从上到下顺序布局,不美观

后面通过https://www.jianshu.com/p/9adc8f6a8da6

了解到了place,改成用place布局

二、获取多个entry内数字,并进行计算

之前爬虫或者其他啥的都是用get()来获取text或者entry组件的函数,这次发现get不好使了

一对多个entry内数据进行计算,就出现

ValueError: invalid literal for int() with base 10

一番搜索,大部分人说没有对输入内容进行限定,要限定输入字符为数字才有效;

后来经过测验,发现并不是这样的,

原因是:

多个entry中有空值的时候【我做的是时间的运算,为了方便测试,只输了秒数框,没有输分钟和小时】,使用int(entry1.get()),会获取不到值,因为字符可以为空值,空值不可以转化为int型【这个空值是None,还是什么也没有,暂时没研究】

找到这个原因就好办了,使用insert(0,“0”)对entry赋予初始值,就可以解决了

三、定时执行

自己提的问题

https://ask.youkuaiyun.com/questions/7936612/54186013

站内大佬提供了代码,本地化项目的时候,发现一开始执行定时运行功能,程序就会无响应,后来一步步查找,一步步定位,发现t = Thread(target=a, args=())
本地项目测试的时候,target=a后面加了(),也就是本地代码变成了t = Thread(target=a(), args=())导致的程序无响应,去掉()就好了

———————————————————————————————————————————

关于text组件的问题

一、如何获取text组件第一行内容

text1.get("1.0", "1.end")

二、如何获取text组件最后一行内容

text1.get("end-1c linestart", "end-1c")

三、如何获取text组件所有内容

text1.get()

四、如何删除text组件所有内容

text1.delete('1.0', tkinter.END)

五、如何在第一行前添加内容

text1.insert(‘1.0’,‘内容’)

六、如何在最后一行后添加内容

text1.insert('end+1c','内容')


关于entry组件

一、如何获取entry组件内容

entry.get()        # 因为entry本身就是单行的

二、如何获取entry组件前10个字符

entry.get()[:10]

获取后10个字符就是entry.get()[10:]

三、删除entry组件内容

entry.delete(0,'end')

四、在entry组件第5个字符前插入内容

entry.insert(4,‘插入的内容’)

五、在entry组件最后追加内容

entry.insert('end','追加的内容')

在开头添加就是entry.insert(0,'内容')

六、修改entry中第3到5个字符

entry = entry[:2] + "新内容" + entry[5:]

七、获取entry中A字符前内容

index = input_str.find("A")

if index != -1:

    result = input_str[:index]

else:

     result = input_str

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值