Rechtecke verschieben

Fragen zu Tkinter.
Antworten
duodiscus
User
Beiträge: 97
Registriert: Sonntag 6. April 2014, 16:10

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!
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.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
Antworten