Seite 1 von 1

Rechtecke verschieben

Verfasst: Freitag 6. Juni 2014, 11:11
von duodiscus
Hallo zusammen, da die andere Frage möglicherweise etwas zu komplex gefragt war, versuche ich es jetzt in einer kleinen:
Wie kann ich das erzeugte Rechteck umpositionieren?!

Code: Alles auswählen

from tkinter import *
def CBKnopf():
    groesse = 10, 10, 35, 25
    Rechteck1 = ZF.create_rectangle(groesse, fill = 'red')

Rechteck1.place(x=200,y=300)

geht nicht, denn da kommt: >>> AttributeError: 'int' object has no attribute 'place'

Kann mir da jemand helfen? Danke!

Re: Rechtecke verschieben

Verfasst: Freitag 6. Juni 2014, 11:43
von BlackJack
@duodiscus: Die Grafikelemente sind keine Widgets. Nachträglich verändern kann man die über die entsprechenden Methoden auf dem `Canvas`-Objekt denen man die ID von dem Grafikelement übergeben muss.
http://effbot.org/tkinterbook/canvas.htm hat geschrieben:Note that items added to the canvas are kept until you remove them. If you want to change the drawing, you can either use methods like coords, itemconfig, and move to modify the items, or use delete to remove them.

Re: Rechtecke verschieben

Verfasst: Freitag 6. Juni 2014, 18:41
von wuf
Hi duodiscus

Hierzu ein Snippet:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from functools import partial
try:
    #~~ For Python 2.x
    import Tkinter as tk
except ImportError:
    #~~ For Python 3.x
    import tkinter as tk

def move_canvas_obj(canvas, obj_id, xdelta, ydelta):
    canvas.move(obj_id, xdelta, ydelta)
    
def main():
    app_win = tk.Tk()

    canvas = tk.Canvas(app_win, bg='yellow')
    canvas.pack()

    rectangle = canvas.create_rectangle(10, 10, 50, 50, outline='red',
        fill='red')

    tk.Button(app_win, text='Move', command=partial(move_canvas_obj,
        canvas, rectangle, 100, 100)).pack()

    app_win.mainloop()

main()
Gruss wuf :wink: