Bilder "dynamisch" einbinden

  • Hallo zusammen


    Auf dieser Webseite ist ein einfaches Pythonscript das Bilder "statisch" ins Programm einbinden.

    Wird dies ausgefügt, funktinoerit alles einwandfrei.

    Nun habe ich versucht die Erstellung "etwas dynamischer - genauer gesagt mit einer Schleife" zu gestalten. - Siehe Bild

    Leider funktioniert dies nicht und ich bekomme die Fehlermeldung welche im folgenden Bild angezeigt ist. Weshalb verstehe ich nicht denn die Variable ist ja erstellt (jetzt einfahc mit der Schleife). Bitte greift mir unterstüzend unter die Arme, spricht stösst meine Nase auf den Fehler und zeigt mir ggf. Wie meine Idee erfolgreich umgesetzt werden kann.

    Besten Dank für euere Unterstützung.

    Freundliche Grüsse

    Dani

  • Hmm, schon die Vorlage ist nicht sehr gelungen und dass die Verbesserung nicht funktioniert ist offensichtlich...

    Die Bilder gehoeren in eine List, dann braucht es die ganzen ifs in WuerfelnClick gar nicht:

    Code
    labelWuerfel.config( image = images[augen] )

    Die while-Schleife sieht gar nicht nach python aus und laedt alle Bilder der Reihe nach in die Variable Bild. (Da bin ich mir aber nicht sicher, die zweite Zuweisung auf dieser Zeile ist verwirrend :conf:)

  • Hallo Hofei und Tell

    Besten Dank für euere Inputs.

    Zu Hofei Das habe ich glatt übersehen.

    Wenn ich den Körper meiner While-Schleife wie folgt abändere

    Code
    imageWuerfel(i) = PhotoImage(file='w"+str(i)+".gif')

    erhalte ich beim Ausführen folgende Fehlermeldung.

    SyntaxError: can't assign to function call

    Die Fehlermeldung verstehe ich zwar grundsätzlich - weiss jedoch nicht, wie ich die Zeile umbauen muss, das es funktioniert. Wie geht das ?

    Zu Tell kannst du mir das mit er LIste genauer erklären evtl in das Beispiel einbauen?

    Gruss Dani

    Einmal editiert, zuletzt von dll-live (25. Februar 2019 um 21:26)

  • Hallo Hofei und Tell

    Besten Dank für euere Inputs.

    Tell mit maginalen Anpassungen ist dein Codeteil lauffähig und bringt mir das gewünschte Ergebnis.

    Hofei: Beide Codes (also der vom Beispiel und die neue Version werden in diesem Post geteilt.

    Ausgangslage (ohne Anpassungen quasi 1:1 von der Webseite):

    Neue Version (mit den gewünschten Anpassungen):

    Da mein Anliegen erfolgreich gelöst wurde, ist dieses Thema für mich erledigt.

  • Das ist doch bloss eine andere Schreibweise fuer den Loop:

    In dem Fall schon, auf Sourcecode-Ebene jedenfalls. Deshalb schrieb ich auch "unpythonisch" und nicht "falsch".

    Warum auf "Sourcecode-Ebene"?

    Python-Bytecode:

    Geschwindigkeitstest:

    Bash
    ❯ python -m timeit -n 10000 "l = [i for i in range(10000)]"
    10000 loops, best of 5: 556 usec per loop
                                                                                                                                 
    ~   29s
    ❯ python -m timeit -n 10000 "l = []" "for i in range(10000): l.append(i)"                               
    10000 loops, best of 5: 1.26 msec per loop
                                                                                                                                 
    ~   64s
    

    In den meisten Fällen mögen das Mikrooptimierungen sein, aber 10.000 50.000 (default ist -r 5) mal eine Liste mit 10.000 ints zu erstellen und in einer Variablen zu speichern ist mit einer List-Comprehension doppelt so schnell wie mit einem for-Loop und list.append!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!