我是 python 的新手,非常困惑。如果有人可以幫助我將由此創(chuàng)建的矩形分配給名稱“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, 800x, y = w//2, h//2canvas = 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) = Obj3app.bind("<Key>", keyinput)app.mainloop()從這段代碼中,通過添加 = Obj3 來分配事件創(chuàng)建的矩形 Obj3 是行不通的,并且會導(dǎo)致錯(cuò)誤。我想在不發(fā)生該錯(cuò)誤的情況下為其分配一個(gè)名稱。謝謝您閱讀此篇。
1 回答

繁花如伊
TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
您的語法是倒退的,為了超出范圍分配,您需要一個(gè)global聲明。
def creation(event):
global Obj3
if event.char == "c": Obj3 = canvas.create_rectangle(x, y, x + 100, y + 50)
不過,一般來說,全局變量不是推薦的做事方式。你會得到意大利面條式的代碼,而且很難支持多線程。最好將引用保留在本地或封裝在一個(gè)類中。
添加回答
舉報(bào)
0/150
提交
取消