Перемещение определенных объектов в холсте Python - PullRequest
0 голосов
/ 25 ноября 2018

Я хочу не перемещать определенный объект на холсте.Я знаю, что есть команда, которая перемещает объект (.move), но она работает только с отдельными элементами.Так, как я мог переместить весь определенный объект, составленный из прямоугольников?Как в примере?Потому что мне нужно переместить сотни маленьких объектов как один.

x=400
y=400



def player(x,y):
    canvas.create_rectangle(x,y,x+50,y+50,fill='black')
    canvas.create_rectangle(x,y+50,x+150,y+150,fill='red')


def moveright(coordinates2):
    global x
    global y
    x=x+200
    y=y+0
    player(x,y)

def moveleft(coordinates3):
    global x
    global y
    x=x-200
    y=y+0
    player(x,y)

def moveup(coordinates4):
    global x
    global y
    x=x+0
    y=y-150
    player(x,y)

def moveright(coordinates5):
    global x
    global y
    x=x+0
    y=y+150
    player(x,y)



canvas.bind_all('<Right>',moveright)
canvas.bind_all('<Left>',moveleft)
canvas.bind_all('<Up>',moveup)
canvas.bind_all('<Down>',movedown)

1 Ответ

0 голосов
/ 27 ноября 2018

В отличие от того, что вы сказали в вопросе, move работает для групп элементов, если вы используете теги: canvas.move(<tag or id>, x, y).

Вот пример:

import tkinter as tk

root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack()


def move():
    # move all items with the 'group' tag
    canvas.move('group', 10, 10)


canvas.create_rectangle(10, 10, 30, 30, tags=['group'])
canvas.create_rectangle(20, 40, 50, 70, tags=['group'])
canvas.create_rectangle(60, 50, 80, 60, tags=['group'])

tk.Button(root, text='Move', command=move).pack()
root.mainloop()
...