Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich hätte da mal eine Frage zu time.sleep()
Ein Button (Tkinter) soll grün eingefärbt werden und danach soll 2 Sekunden gewartet werden. Das Einfärben geschieht aber erst nach den 2 Sekunden.
So funktionieren GUIs nicht. Aenderungen im Aussehen werden immer erst bei erreichen des main-loop durchgefuehrt. Deshalb muss man mit Timern arbeiten. Da du nicht verraetst, welches GUI-Framework du benutzt (kleiner Hinweis... es gibt fuer die diversen spezielle Unterforen) kann man dir da auch nicht detaillierter helfen.
dass es die Unterforen gibt weiß ich, ich dachte nur das hätte jetzt mehr mit dem time.sleep zu tun.
Außerdem habe ich geschrieben dass ich Tkinter benutze
Die mainloop wurde auch schon erreicht, das ganze steht in einer Funktion drin die von einem Button aufgerufen wird.
Ah, verzeih, dann habe ich nicht genau genug gelesen. Die Funktion die du suchst ist "after". Damit startest du den Code der nach den 2 Sekunden ausgefuehrt werden soll.
Und wie denkst du soll denn der mainloop erreicht werden, wenn sleep wartet?
@raiminator: Die Hauptschleife wertet die Benutzerinteraktion aus und ruft Deine Funktion auf wenn die Schaltfläche gedrückt wurde. Und so lange Deine Funktion läuft, und nicht wieder zur aufrufenden Hauptschleife zurück kehrt, kann die Hauptschleife natürlich auch nichts tun.
Entweder versteh ich dich falsch oder du mich
Die Mainloop wurde bei mir schon lange aufgerufen, und das mit dem sleep steht in einer Funktion die bei Klick auf einen Button aufgerufen wird.
Habe es jetzt mal mit main.after(2000, neueFrage()) versucht, aber das gibt das gleiche Ergebnis :/
Der mainloop muss nicht nur *einmal* aufgerufen werden. Ein GUI-Programm befindet sich quasi bestaendig darin, und wenn events kommen - wie Button-druecken oder eben Timer-Events - dann wird code ausgefuehrt. Aber solange der ausgefuehrt wird (und sleep ist ausfuehren..) passiert nix mit der GUI.
Und dein gezeigter call ist auch falsch. Du musst natuerlich neueFrage nicht *AUFRUFEN*, sondern uebergeben: