提问者:小点点

在Python中的if语句中为函数分配名称


我是python新手,非常困惑。 如果有人能帮我将由此创建的矩形赋给名称“obj3”,那将是极其有帮助的(您可以在下面看到这一点)。

if event.char == "c": canvas.create_rectangle(x, y, x + 100, y + 50)

这是我的程序代码:-

app = tk.Tk()
app.title("VAB")
app.iconbitmap(r"C:\Users\shafa\OneDrive\Documents\VAB\Sprites\VAB-Icon.ico")
w, h =1200, 800
x, y = w//2, h//2


canvas = tk.Canvas(app, width = w, height = h)
canvas.pack()
Obj1 = canvas.create_rectangle(x, y, x + 100, y + 200)
points = [650, 400, 600, 330, 550, 400]
Obj2 = canvas.create_polygon(points, fill='', width = 1, outline = 'black')

def creation(event):
    if event.char == "c": canvas.create_rectangle(x, y, x + 100, y + 50) = Obj3

app.bind("<Key>", keyinput)
app.mainloop()

从这段代码来看,通过添加=Obj3来分配事件创建矩形Obj3是行不通的,而且会导致错误。 我想在不发生错误的情况下为它指定一个名称。 谢谢你读到这篇文章。


共1个答案

匿名用户

您的语法是向后的,并且为了在作用域之外赋值,您需要一个global声明。

def creation(event):
    global Obj3
    if event.char == "c": Obj3  = canvas.create_rectangle(x, y, x + 100, y + 50)

但总的来说,全球化并不是一种值得推荐的做事方式。 你得到了意大利面般的代码,而且很难支持多线程。 最好将引用保持在本地或封装在类中。