Étrange Exception dans Tkinter rappel

Je travaille toujours sur mon petit Tkinter projet qui est une simple journalisation de la console qui s'imprime en entrant du texte à partir de la ligne série à un Widget Texte avec certains coloration appliquée.

Une question est ouverte et peut être trouvé ici: Python Tkinter Widget Texte avec Auto & la Coutume de Défilement

Cependant, même sans manuel de défilement (donc je suis en utilisant self.text.yview(END) à défiler vers le bas après l'insertion de texte avec self.text.insert(END, str(parsed_line)).

Le script fonctionne réellement, mais chaque maintenant et puis il jette un peu de "silence" des exceptions dans les Tkinter thread ne pas laisser l'ensemble du crash de l'application:

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""

Il semble que si quelque méthode attend un entier, renvoie la chaîne integer but got "end" à une méthode qui attend un flotteur qui est concatinated avec le message d'erreur. Le nombre à virgule dans cette chaîne ressemble à la position de la barre de défilement que j'ai joint à mon widget texte:

(...)       
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)
(...)

J'ai le sentiment qu'il se passe quand il y a beaucoup de lignes sont insérées à l'intérieur d'un court laps de temps. Mais depuis je n'ai qu'un seul thread à interagir avec Tkinter, cela ne peut pas être un problème thread.

Je suis aussi très aléatoire des erreurs comme ça avant j'avais appliqué la str() fonction de parsed_line dans self.text.insert(END, str(parsed_line)).

C'est un comportement très étrange et je me demandais si quelqu'un peut expliquer ce que c'est et comment le résoudre.

Merci beaucoup!

Il est difficile de répondre à vos questions que vous ne fournissez pas un peu de code pour que nous puissions reproduire votre problème. Ni la question, ni les autres dans votre post fournir suffisamment de renseignements. Pourriez-vous poster une version simplifiée de votre code qui produit toujours des exceptions que vous avez indiqué lors de son exécution ?
Merci pour votre réponse. Je assemblés en fait un script qui reproduit le problème expliqué dans stackoverflow.com/questions/8850329/..., et il semble être lié à ce problème. Probablement, vous pourriez avoir un coup d'oeil dans ce script.
dans l'autre question que vous mentionnez à l'aide de deux fils. Si vous êtes, qui est presque certainement le problème ici. Pouvez-vous préciser si vous voyez ce problème dans le code où vous avez accès à tkinter, objets de plus d'un fil?
Tkinter, et le multithreading est un non-non. AFAIR, la seule chose que vous pouvez faire à partir d'un autre thread (pas la “main”) est d'envoyer des événements personnalisés.
Ouais, j'ai lu que sur l'envoi des événements personnalisés, aussi, et je l'ai essayé (Comme indiqué dans le fil relié à propos de la coutume de défilement). Toutefois, il ne fonctionne pas non plus. Au début, je pensais que cela a fonctionné, mais puis de temps en temps la python.exe s'est écrasé quelque part en cours dans les Savoirs traditionnels dll. Donc la réponse est: La seule chose qui fonctionne VRAIMENT est à l'aide de Tk.after().

OriginalL'auteur jaw | 2012-01-17