Hallo. Ich beschäftige mich seit ein paar Wochen mit Python und bin nun bei tkinter angekommen.
Nun stehe ich vor dem Problem, dass ich eine GUI habe und möchte nur erreichen, dass sich ein grafisches Objekt entlang der x-Achse bewegt.
Jedoch scheitere ich an der mainloop() von tkinter. Ohne diese wird die GUI nicht angezeigt.
Jeglicher Code danach wird ja nicht ausgeführt ohne das die GUI geschlossen wird.
Daher meine Frage wie kann ich es realisieren, dass die Grafik über den Bildschirm läuft ohne einen Button platzieren zu müssen! Wenn ich einen Button anbringe und hier eine Funktion aufrufe, wäre das ja kein Problem. Aber in dem Fall soll die Grafik alleine bei Programmstart sich bewegen.
Hier mein aktuelles Code-Beispiel:
import tkinter as tk
import time
root = tk.Tk()
# Textausgabe erzeugen
label1 = tk.Label(root, text="Hallo Welt!",
fg="red",
bg="orange",
font=("times", 25, "bold", "italic"))
label1.place(x=1, y=1)
#Grafik einbetten
bild1 = tk.PhotoImage(file="biene.png")
label2 = tk.Label(root, image=bild1)
label2.place(x=1,y=100)
root.mainloop()
'''
for i in range(1,100):
label2.place(x=1,y=100)
time.sleep(0.5)
'''
tkinter Anfängerfrage bewegte Grafik
Es macht keinen Unterschied, ob Du die Animation per Button, oder gleich im Hauptprogramm startest. In beiden Fällen brauchst Du eine Funktion, die Du per `after` aufrufst, und die jeweils einen Animationsschritt macht und sich selbst wieder per `after` aufruft.
Was sollen die Nummern an den Variablennamen. Versuche sprechende Namen zu finden.
Was sollen die Nummern an den Variablennamen. Versuche sprechende Namen zu finden.
Code: Alles auswählen
import tkinter as tk
def animation(bild, x):
bild.place(x=x, y=100)
bild.after(100, animation, bild, x+1)
def main():
root = tk.Tk()
hallo_label = tk.Label(root, text="Hallo Welt!",
fg="red",
bg="orange",
font=("times", 25, "bold", "italic"))
hallo_label.place(x=1, y=1)
bild = tk.PhotoImage(file="biene.png")
bild_label = tk.Label(root, image=bild)
animation(bild_label, 1)
root.mainloop()
if __name__ == "__main__":
main()