Forum: PC-Programmierung Python sleep() im tkinter-Fenster


von Günter L. (Firma: Privat) (guenter_l)


Angehängte Dateien:

Lesenswert?

sleep() im tkinter-Fenster
Ich hätte gerne das in "Test_2.py" im Prinzip
das gleiche passiert wie in "Test_1.py".
Eine Sekunde Pause zwischen jeder Textzeile
und Scrolling wenn das Fenster voll ist.
Also das der Text oben verschwindet wenn unten
neuer Text dazu kommt. Im tkinter-Fenster geht
es nicht weiter wenn das Fenster voll ist.

von N. M. (mani)


Lesenswert?


von Günter L. (Firma: Privat) (guenter_l)


Angehängte Dateien:

Lesenswert?

von N. M. schrieb:
>Scrollbars?

Ob Scrollbar das Problem löst?
Ich habe versucht eine Scrollbar zu Programmieren,
ist mir leider noch nicht gelungen.
Auf Youtube habe ich ein Beispiel gefunden, daß
leider auch nicht funktioniert.
In Zeile 14 ist ein Fehler.

von Sheeva P. (sheevaplug)


Lesenswert?

Günter L. schrieb:
> sleep() im tkinter-Fenster

No.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Du rufst ja alle zettel.insert schon vor der mainloop auf. Kannst du da
überhaupt das sekündliche Fortschreiten der Ausgabe mitverfolgen?

Zur Frage mit dem Scrollen: Du kannst den Text nach jeder Ausgabezeile
mit zettel.see("end") automatisch ans Ende scrollen lassen. Wenn du
tkinter.scrolledtext.ScrolledText anstelle von tkinter.Text verwendest,
erscheint ein Scrollbar neben dem Textfeld.

von Günter L. (Firma: Privat) (guenter_l)


Angehängte Dateien:

Lesenswert?

Alleine mit:
>mit "zettel.see("end")" automatisch ans Ende scrollen lassen.
ohne "tkinter.scrolledtext.ScrolledText" hat funktioniert.
Vielen Dank.
Mit "tkinter.scrolledtext.ScrolledText" kommt eine Fehlermeldung:
"module 'tkinter' has no attribute 'scrolledtext'"

>Du rufst ja alle zettel.insert schon vor der mainloop auf. Kannst du da
>überhaupt das sekündliche Fortschreiten der Ausgabe mitverfolgen?

Also wenn ich das richtig verstanden habe kann man doch
außerhalb der mainloop überhaupt nichts programmieren,
weil daß ja nie erreicht wird. Es muß sich doch alles
was man jetzt sonst noch dazu programmiert, innerhalb der
mainloop befinden. Richtig?
Die Idee mit sleep() war ja, ich wollte das Programm
verlangsamen, um zu beobachten was da passiert.
Wenn das nun nicht geht ist jetzt auch egal.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Günter L. schrieb:
> Mit "tkinter.scrolledtext.ScrolledText" kommt eine Fehlermeldung:
> "module 'tkinter' has no attribute 'scrolledtext'"

Du brauchst dann noch ein
1
import tkinter.scrolledtext

Günter L. schrieb:
> Die Idee mit sleep() war ja, ich wollte das Programm
> verlangsamen, um zu beobachten was da passiert.
> Wenn das nun nicht geht ist jetzt auch egal.

Es geht schon, nur muss man die Sache dann etwas anders aufziehen (s.
Anhang). Das erste Mal wird add_text schon vor der mainloop aufgerufen.
Damit ist das Textfeld schon einmal mit der ersten Zeile befüllt. Danach
wird – während die mainloop schon läuft und das Fenster offen ist –
add_text jeweils verzögert um 1 Sekunde 28 weitere Male aufgerufen,

von Günter L. (Firma: Privat) (guenter_l)


Lesenswert?

Test_3.py habe ich getestet, funktioniert prima,
Vielen Dank.

von Sheeva P. (sheevaplug)


Lesenswert?

Günter L. schrieb:
> Test_3.py habe ich getestet, funktioniert prima,
> Vielen Dank.

Tkinter / Tix ist eventbasierte Software, hat also technisch betrachtet 
eine? Genau, eine Eventloop. Deswegen ist time.sleep() oder Ähnliches da 
STRENGSTENS VERBOTEN und ein guter Grund für eine fristlose Kündigung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.