如何获取画布项目的ID?

问题描述 投票:1回答:1

如果将画布项目存储在一个变量中,我希望将其存储为tkinter.rectangle对象,以后可以使用。

rec = can.create_rectangle(l, fill="blue")

但是存储为整数<< class'int'>>

from tkinter import Tk, Canvas, Button

def press(canv, rect):
    print("pressed")
    canv.move(rect, 10)

l = [50,100,100,200]

root = Tk()
can = Canvas(root)
can.pack()
rec = can.create_rectangle(l, fill="blue")
print("rec",rec)    #1
print("type(rec) ", type(rec)) #<class 'int'>
b = Button(root, text="NOTHING", command=lambda:press(can, rec))
b.pack()
print("type(b) = ",type(b)) #<class 'tkinter.Button'>
print("b = ",b) #TCL id like .41549040
root.mainloop()

运行此代码时,它返回错误:

_tkinter.TclError: wrong # args: should be ".21823184 move tagOrId xAmount yAmount"

为什么它是整数类型,以及如何获取画布项目的ID以便以后移动它?

python canvas tkinter id
1个回答
0
投票

如果我将画布项目存储在一个变量中,则希望将其存储为tkinter.rectangle对象

这是一个错误的期望。记录的行为是它返回整数ID。

为什么它是整数类型,以及如何获取画布项目的ID以便以后移动它?

除了create_rectangle方法返回的整数外没有其他ID。您可以使用此ID来移动项目。

运行此代码时,它返回错误:_tkinter.TclError: wrong # args: should be ".21823184 move tagOrId xAmount yAmount"

该错误消息告诉您确切的问题是:wrong # args。您必须提供ID,以及xAmount和yAmount。您只提供了id和xAmount。

© www.soinside.com 2019 - 2024. All rights reserved.