Вопрос:

Как перенастроить элементы холста tkinter?

python user-interface tkinter

27237 просмотра

2 ответа

673 Репутация автора

Я не знаю, есть ли в этом вопросе дубликаты, но я еще не нашел.

при использовании python вы можете быстро создавать GUI, но иногда вы не можете найти способ сделать то, что вы хотите. например у меня есть следующая проблема:

давайте предположим, что есть холст с именем K и прямоугольником с ID = 1 (идентификатор элемента холста, а не идентификатор памяти).

если я хочу перерисовать элемент, я могу удалить его, а затем перерисовать его с новыми настройками.

K.delete(1)
K.create_rectangle(x1,y1,x2,y2,options...)

вот проблема: идентификатор объекта меняется; Как я могу перерисовать или переместить или изменить размер прямоугольника или просто изменить его, не меняя его идентификатор с помощью метода? Например:

K.foo(1,options....)

если такого метода нет, то я должен создать список с идентификаторами объекта canvas, но это не элегантно и не быстро. Например:

ItemIds=[None,None,etc...]
ItemIds[0]=K.create_rectangle(old options...)
K.delete(ItemIds[0])
ItemIds[0]=K.create_rectangle(new options...)
Автор: Alberto Perrella Источник Размещён: 03.11.2012 06:42

Ответы (2)


8 плюса

226523 Репутация автора

Решение

Вы можете использовать Canvas.itemconfig:

item = K.create_rectangle(x1,y1,x2,y2,options...)
K.itemconfig(item,options)

Для перемещения предмета вы можете использовать Canvas.move


import Tkinter as tk

root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack()
item = canvas.create_rectangle(50, 25, 150, 75, fill="blue")

def callback():
    canvas.itemconfig(item,fill='red')

button = tk.Button(root,text='Push me!',command=callback)
button.pack()

root.mainloop()
Автор: mgilson Размещён: 03.11.2012 07:06

1 плюс

11 Репутация автора

Я искал вокруг и нашел идеальный метод Tkinter для изменения размера. canvas.coords () добивается цели. просто введите ваши новые координаты, и это "хорошо идти". Python 3.4
PS. не забывайте, что первым параметром является идентификатор.

Автор: Alan Lewit Размещён: 10.07.2015 03:33
32x32