Hallo
Bei meinem aktuellen Projekt werden mit Tkinter diverse geometrische Formen auf dem Canvas gezeichnet.
Nun kommt es immer wieder vor, dass ich den zuletzt gemachten Zeichenvorgang gerne rückgängig machen bzw. die zuletzt gezeichnete geometrische Form wieder vom Canvas entfernen möchte. Bisher werden dazu immer wieder alle auf dem Canvas aktuell benötigten Formen einfach komplett neu gezeichnet.
Geht das auch eleganter?
Gruß
Atalanttore
Letzten Zeichenvorgang rückgängig machen
-
- User
- Beiträge: 407
- Registriert: Freitag 6. August 2010, 17:03
Danke. Das Löschen funktioniert jetzt.
Kann man ein vorher gelöschtes Objekt anhand der Item ID auch neu zeichnen?
Gruß
Atalanttore
Kann man ein vorher gelöschtes Objekt anhand der Item ID auch neu zeichnen?
Gruß
Atalanttore
-
- User
- Beiträge: 407
- Registriert: Freitag 6. August 2010, 17:03
Undo/Redo wäre schon praktisch.
Gruß
Atalanttore
Gruß
Atalanttore
-
- User
- Beiträge: 407
- Registriert: Freitag 6. August 2010, 17:03
Umsetzen möchte ich eigentlich eine Bewegung von geometrischen Formen auf dem Canvas.
Gruß
Atalanttore
Gruß
Atalanttore
Hi Atalanttore
Du kannst natürlich an Stelle von ID's auch Tag's verwenden. Wenn du eine Methode gleichzeitig auf mehrere Canvas Objekte anwenden möchtest gibst du diesen Objekten den gleichen Tag Name. Zum Beispiel das gleichzeitige Verschieben dreier Objekte:Gruss wuf
Du kannst natürlich an Stelle von ID's auch Tag's verwenden. Wenn du eine Methode gleichzeitig auf mehrere Canvas Objekte anwenden möchtest gibst du diesen Objekten den gleichen Tag Name. Zum Beispiel das gleichzeitige Verschieben dreier Objekte:
Code: Alles auswählen
import tkinter as tk
APP_TITLE = "Canvas Objekt bewegen"
APP_XPOS = 100
APP_YPOS = 100
APP_WIDTH = 350
APP_HEIGHT = 200
class Application(tk.Frame):
def __init__(self, app_win):
self.app_win = app_win
tk.Frame.__init__(self, app_win)
self.canvas = tk.Canvas(self, bg='steelblue')
self.canvas.pack()
xpos = 20
ypos = 20
xoffset = 50
yoffset = 50
for shape_nr, shape_color in enumerate(('yellow', 'red', 'green')):
self.canvas.create_oval(xpos, ypos, xpos+100, ypos+100, width=1,
fill=shape_color, tags='shapes')
xpos += xoffset
ypos += yoffset
self.move_shapes()
def move_shapes(self):
self.canvas.move('shapes', 2, 1)
self.app_win.after(100, self.move_shapes)
def main():
app_win = tk.Tk()
app_win.title(APP_TITLE)
app_win.geometry("+{}+{}".format(APP_XPOS, APP_YPOS))
#app_win.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT))
app_win.option_add("*highlightThickness", 0)
app = Application(app_win)
app.pack(fill='both', expand=True)
app_win.mainloop()
if __name__ == '__main__':
main()
Take it easy Mates!
-
- User
- Beiträge: 407
- Registriert: Freitag 6. August 2010, 17:03
Danke für den Beispielcode. Den kann ich gut gebrauchen.
Gruß
Atalanttore
Gruß
Atalanttore