Tkinter开发Pong游戏报错Cannot find reference 'pack' in 'None'求助
问题原因及解决办法
错误原因
- tkinter中,
.place()方法的返回值是None,你将tk.Canvas(...).place(x=1,y=0)直接赋值给canvas变量,导致canvas实际是None,调用canvas.pack()自然会出现找不到pack引用的错误。 - 同时犯了布局管理器混用的错误:
pack()和place()是tkinter的两种不同布局方式,不能同时用于同一个组件。
修复后的代码
import tkinter as tk window = tk.Tk() window.geometry('600x600') canvas_width, canvas_height = 10, 100 # 先创建Canvas实例,再调用布局方法 canvas = tk.Canvas(window, width=canvas_width, height=canvas_height, bg="black") # 选择一种布局方式,这里用pack放在左侧 canvas.pack(side=tk.LEFT) # 绘制左侧的矩形(Pong球拍) canvas.create_rectangle(0, 0, canvas_width, canvas_height, fill="white") window.mainloop()
补充说明
如果偏好使用place()布局,代码可修改为:
import tkinter as tk window = tk.Tk() window.geometry('600x600') canvas_width, canvas_height = 10, 100 # 分开创建Canvas和调用布局方法 canvas = tk.Canvas(window, width=canvas_width, height=canvas_height, bg="black") canvas.place(x=1, y=0) canvas.create_rectangle(0, 0, canvas_width, canvas_height, fill="white") window.mainloop()
内容的提问来源于stack exchange,提问作者alittles1lly
相关产品推荐
相关产品推荐

