Я все еще работаю над моим небольшим проектом Tkinter, который представляет собой простую консоль регистрации, которая печатает входящий текст из последовательной строки в текстовый виджет с примененной раскраской.
Один вопрос открыт и его можно найтиздесь: Текстовый виджет Python Tkinter с автоматической и настраиваемой прокруткой
Однако даже без ручной прокрутки (поэтому я использую 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 but got "end"
методу, который ожидал число с плавающей точкой, связанное с сообщением об ошибке. Число с плавающей точкой в этой строке выглядит как положение полосы прокрутки, которую я прикрепил к своему текстовому виджету:
(...)
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, это не может быть проблемой с потоками.
Я также получил очень случайные ошибки, подобные этим, прежде чем я применил функцию str()
к parsed_line
в self.text.insert(END, str(parsed_line))
.
Это очень странное поведение, и мне интересно, кто-нибудь может объяснить, что это такое и как это исправить.
Большое спасибо!