【发布时间】:2021-02-03 15:49:07
【问题描述】:
我的目标是编写一个程序,插入一个对象(例如一个矩形)
可以在插入后使用箭头键移动。
我可以在画布上放置一个矩形,但我无法与
矩形,因为我无法从事件函数返回一个小部件。
所以在这个程序中,我可以移动画布上已经存在的矩形,
但是当我插入另一个矩形时,我仍在移动第一个矩形。
from tkinter import *
root = Tk()
my_canvas = Canvas(root, width = 500, height = 500, bg = "white")
my_canvas.grid(row = 0, column = 0)
my_object = my_canvas.create_rectangle(50, 150, 250, 50, fill = "red")
def left(event):
my_canvas.move(my_object, -10, 0)
def right(event):
my_canvas.move(my_object, 10, 0)
def up(event):
my_canvas.move(my_object, 0, -10)
def down(event):
my_canvas.move(my_object, 0, 10)
def opamp(event):
#the following code does not overwrite my_object...
my_object = my_canvas.create_rectangle(100, 200, 250, 50, fill = "black")
my_label = Label(root, text = "your mouse is at " + str(event.x) + " " + str(event.y))
my_label.grid(row = 1, column = 1)
#returning my_object does not work either
root.bind("<Left>", left)
root.bind("<Right>", right)
root.bind("<Up>", up)
root.bind("<Down>", down)
root.bind("<o>", opamp)
root.mainloop()
【问题讨论】:
-
您对术语的使用有点混乱。画布上的矩形不是小部件。是要返回矩形的id,还是要返回widget?
-
@Bryan Oakley 哦,对不起。我想与矩形交互。也许 id 对此有所帮助。创建的矩形不是对象的实例吗?