糊状物 发表于 2020-5-1 13:31

Python tkinter的Entry组件黏贴超长文本后会非常卡顿怎么解决?

本帖最后由 糊状物 于 2020-5-1 13:33 编辑

Python tkinter的Entry组件黏贴超长文本后会非常卡顿怎么解决?

#python 3.7.6win10
from tkinter import *
root=Tk()
text=StringVar()
entry=Entry(root,textvariable=text)
entry.grid(row=0,column=0,sticky=NSEW)
root.mainloop()

运行后在输入框黏贴超长的文本后输入框会非常非常卡顿,例如黏贴以下文本:
完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全完全


不需要推荐替代方案(如推荐用pyqt5或换其他widget之类的),我单纯是使用上遇到这个问题想知道怎么解决。

精钢魔像 发表于 2020-5-1 13:49

如果是cpu跑满,那你看看是不是要考虑用异步

糊状物 发表于 2020-5-1 14:02

精钢魔像 发表于 2020-5-1 13:49
如果是cpu跑满,那你看看是不是要考虑用异步

cpu 0%,同一个线程同一个界面,其他地方就不卡,单独是输入了超长文本的Entry卡到爆。

すぴぱら 发表于 2020-5-1 19:36

糊状物 发表于 2020-5-1 19:39

すぴぱら 发表于 2020-5-1 19:36
试了一下2.7完全不卡,你什么配置?

i5 2300
8G内存
我觉得不是配置问题啊,我说的卡不是整个GUI卡,而是单单这个输入框卡,将文本黏贴进去后你试试用鼠标选择部分文本?整个鼠标都一顿一顿的。

すぴぱら 发表于 2020-5-1 19:44

LennyWallUp 发表于 2020-5-1 19:46

试了一下,粘贴完之后反应稍微有些慢,但是也不至于特别卡...我是python 3.7.3 64bit的

糊状物 发表于 2020-5-1 19:56

すぴぱら 发表于 2020-5-1 19:44
哦,这样啊,字数特别多的情况下建议你用Text组件,鼠标操作文本速度极快 ...

其实我也知道用Text会快,但是就是想知道这个Entry是否可以调整,大概是触发了强迫症了吧

abc12354a 发表于 2020-5-2 12:55

2代i5,,,

—— 来自 samsung SM-G9750, Android 10上的 S1Next-鹅版 v2.2.2.1

citrus 发表于 2020-5-2 17:38

最靠谱的办法大概是你比较一下Entry和Text这两个类的实现有什么区别,然后自己写个Entry的派生类把有问题的函数换掉

或者是你安装的tk后台有bug,升级一下版本

cxf5102 发表于 2020-5-2 19:48

感觉这个组件的实现的时候没想到会有这么长的文本。文本粘贴进去以后前面的部分左右移动不卡,按end到最后进行同样的操作就挺卡的。
页: [1]
查看完整版本: Python tkinter的Entry组件黏贴超长文本后会非常卡顿怎么解决?