Seite 1 von 1

"Video" funktioniert nur in IDLE

Verfasst: Donnerstag 8. September 2011, 20:05
von Krabman318
Nothing but Python und ich haben wieder ein Problem mit unserem Programm, Virtual Heidelberg:
In der Methode unten soll dreimal 0,2 Sekunden gewartet und eine andere Methode, die ein neues Bild lädt, ausgeführt werden(Deswegen "Video").
Wird das Programm in IDLE ausgeführt, funktioniert alles.
Wenn es aber einfach durch einen Doppelklick geöffnet wird, erscheint nur bei der dritten Drehung ein neues Bild.
Warum funktioniert es nur in IDLE? :?:

Code: Alles auswählen

def vid_nach_rechts(self):
        for i in range (3):
            print("Drehe um 30 Grad nach rechts!")
            time.sleep(0.2)
            self.nach_rechts()
            

Code: Alles auswählen

def nach_rechts(self):
        if self.drehposition != 11:
            self.drehposition = self.drehposition + 1
        else:
            self.drehposition = 0
        testvar = self.dictionary_start[self.bildliste[self.bildposition]]
        self.bild = PhotoImage(file=self.dictionaryliste[testvar][self.drehposition])
        self.bildupdate()

"Video" funktioniert nur in IDLE

Verfasst: Freitag 9. September 2011, 14:38
von Nothing but Python
Auch wenn man in vid_nach_rechts()

Code: Alles auswählen

nach_rechts()
durch den Code dieser Funktion ersetzt,
funktioniert das "Video" nur im IDLE.

EDIT:Bei einem anderem Problem im Code hat es dann funktioniert! :K

"Video" funktioniert nur in IDLE

Verfasst: Montag 12. September 2011, 15:52
von Nothing but Python
:?:

Re: "Video" funktioniert nur in IDLE

Verfasst: Mittwoch 21. September 2011, 15:55
von Krabman318
Ich wollte nochmal fragen, ob irgendjemand weiß, woran es liegt :?:

Re: "Video" funktioniert nur in IDLE

Verfasst: Mittwoch 21. September 2011, 16:06
von BlackJack
@Krabman318: Solange der Code in der `vid_nach_rechts()`-Methode ausgeführt wird, ist die GUI-Hauptschleife nicht aktiv. Die hat die Methode ja wahrscheinlich aufgerufen und läuft erst weiter wenn die Methode zurück kehrt. Und dann aktualisiert sie erst die Anzeige. Und das dann mit dem Bild was zu dem Zeitpunkt das letzte war, welches gesetzt wurde.

Du müsstest also entweder die Schleife mit dem `sleep()` durch mehrfache Aufrufe von einer Methode durch die `after()`-Methode ersetzen, oder in der Schleife nach jedem Bild mit `update_idletasks()` dafür sorgen, dass die GUI aktualisiert wird.

Re: "Video" funktioniert nur in IDLE

Verfasst: Mittwoch 21. September 2011, 17:47
von Krabman318
Vielen Dank!
Mit update_idletasks() funktioniert es! :mrgreen:

Re: "Video" funktioniert nur in IDLE

Verfasst: Donnerstag 22. September 2011, 19:57
von Nothing but Python
Danke :mrgreen: