Bild verschieben

Fragen zu Tkinter.
Antworten
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

Hi,
ich hab mit Tkinter ein Bild in einem Fentser eingefügt.
Nun will ich das Bild bewegen ohne es neu zu laden.
Also lediglich die x und y Koordinate ändern.
Bei Ruby ging das mit:
Beispiel.x += 1
Das geht aber iwie nicht...
Hoffe ihr könnt mir helfen=)
Wenn das nicht ohne neu Laden bei diesem Modul geht, wär ein alternativ Vorschlag wo es geht sehr nett=)

LG,
Morlon
BlackJack

@Morlon: Üblicherweise würde man dafür ein `Canvas` nehmen, sich die ID vom `create_image()`-Aufruf merken und dann die Koordinaten mit der `coords()`-Methode ändern.
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

Wie genau funktioniert das?
Das ist mein Code:

Code: Alles auswählen

from tkinter import * 
root = Tk()
canvas_width = 300
canvas_height =300
canvas = Canvas(root, 
           width=canvas_width, 
           height=canvas_height)
canvas.pack() 
bild=PhotoImage(file=r"C:\Users\Admin1\Desktop\x.png")
bildLabel = canvas.create_image(20,20, anchor=NW, image=bild)
Zuletzt geändert von Anonymous am Samstag 26. Dezember 2015, 19:39, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Morlon:

Code: Alles auswählen

import tkinter as tk


def main():
    root = tk.Tk()
    canvas = tk.Canvas(root, width=300, height=300)
    canvas.pack()
    image = tk.PhotoImage(file='test.gif')
    image_id = canvas.create_image(20, 20, anchor=tk.NW, image=image)
    canvas.coords(image_id, 20, 30)
    root.mainloop()


if __name__ == '__main__':

    main()
Man sieht hier jetzt nur das Endergebnis weil das schon vor der Hauptschleife verschoben wird, aber um das ordentlich zu machen müsste man da etwas mehr Code schreiben und letztendlich wird man sich wenn das der Charakter aus Deinem anderen Beitrag werden soll, sowieso neben der Klasse für die Spielfeldanzeige auch eine schreiben welche die Charakteranzeige kapselt.
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

Vielen Dank!
Antworten