Comment faire défiler automatiquement dans une Tkinter fenêtre de message
J'ai écrit cette classe pour la production de "surveillance" sortie dans une fenêtre supplémentaire.
- Malheureusement, il n'a pas faites défiler automatiquement jusqu'à la plus récente ligne. Quel est le problème?
- Que j'ai aussi des problèmes avec Tkinter et ipython: comment un équivalent de mise en œuvre avec qt4?
Voici le code:
import Tkinter
class Monitor(object):
@classmethod
def write(cls, s):
try:
cls.text.insert(Tkinter.END, str(s) + "\n")
cls.text.update()
except Tkinter.TclError, e:
print str(s)
mw = Tkinter.Tk()
mw.title("Message Window by my Software")
text = Tkinter.Text(mw, width = 80, height = 10)
text.pack()
Utilisation:
Monitor.write("Hello World!")
OriginalL'auteur Philipp der Rautenberg | 2009-05-01
Vous devez vous connecter pour publier un commentaire.
Ajouter un énoncé
cls.text.see(Tkinter.END)
juste après celui de l'appel insérer.OriginalL'auteur Alex Martelli
Pour ceux qui veulent essayer de liaison:
Juste être prudent. @BryanOakley souligné, la modification événement virtuel n'est appelée qu'une fois, jusqu'à ce qu'il soit réinitialisé. Considérons ci-dessous:
Savez-vous que
<<Modified>>
ne se déclenche une fois que la première fois que la fenêtre transitions de non-modifié modifié? Vous n'obtiendrez pas le cas jusqu'à ce que vous désactivez le drapeau avec.edit_modified(True)
.Chiffres: tkdocs n'a pas l'expliquer, ni effbot, mais tcl.tk si vous lisez attentivement. Réglage de la réponse ci-dessus, merci! Btw, c'est
.edit_modified(False)
OriginalL'auteur Jonathan Abbott