gpt4 book ai didi

python - Tkinter 回调中的奇怪异常

转载 作者:行者123 更新时间:2023-11-28 17:51:35 25 4
gpt4 key购买 nike

我仍在开发我的 Tkinter 小项目,它是一个简单的日志控制台,可以将来自串行线路的传入文本打印到应用了一些颜色的文本小部件。

一个问题是开放的,可以在这里找到:Python Tkinter Text Widget with Auto & Custom Scroll

但是,即使没有手动滚动(所以我使用 self.text.yview(END) 在使用 self.text.insert( 插入文本后自动滚动到底部END, str(parsed_line)).

该脚本确实有效,但时不时地在 Tkinter 线程中抛出一些“静默”异常,不会让整个应用程序崩溃:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2813, in set
self.tk.call((self._w, 'set') + args)
TclError: expected floating-point number but got "0.7807017543859649integer but got "end""
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2813, in set
self.tk.call((self._w, 'set') + args)
TclError: invalid command name ".15427224integer but got "end""

看起来好像某个方法需要一个整数,返回字符串 integer 但得到“end” 给一个方法,该方法需要一个与错误消息连接的 float 。该字符串中的 float 看起来像我附加到文本小部件的滚动条的位置:

(...)       
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
text = Text(wrap=WORD, yscrollcommand=scrollbar.set)
scrollbar.config(command=text.yview)
text.pack(expand=YES, fill=BOTH)
(...)

我有一种感觉,当在短时间内插入很多行时会发生这种情况。但是因为我只有一个线程与 Tkinter 交互,所以这不可能是线程问题。

self.text.insert(END, str( parsed_line)).

这是非常奇怪的行为,我想知道是否有人可以解释这是怎么回事以及如何解决它。

非常感谢!

最佳答案

mtTkinter 允许使用 Tkinter 进行多线程,您可以在这里获取:

http://tkinter.unpythonic.net/wiki/mtTkinter

只需导入 mtTkinter 代替 Tkinter。这将允许您从多个线程将文本插入文本小部件而不会发生冲突。我将它用于我编写的一些即时消息软件,并且效果非常好。

关于python - Tkinter 回调中的奇怪异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com