You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的Tkinter Button的command参数会触发NameError错误?

错误原因
  • 函数定义顺序不符合Python执行逻辑:Python是逐行从上到下解释执行代码的,你在创建Button组件时,给command参数传入的start_game_pressed函数是在这行代码之后才通过def定义的,此时解释器还没读取到函数定义,自然找不到对应的名称,触发NameError。
  • 回调函数参数错误:你定义的start_game_pressed不是类的实例方法,不需要加self参数,Button触发command回调时不会传入任何参数,保留self会导致点击按钮时报参数数量不匹配的错误。
修复方案

调整代码顺序,把start_game_pressed函数的定义放到创建Button的代码之前,同时删除函数的self参数,调整后核心代码如下:

# 先定义回调函数
def start_game_pressed():
    print("sus")

# 再创建Button组件
start_game = Button (text_box,command=start_game_pressed, fg='black',text = """                                                
丂七闩尺七
""")
start_game.place(x=450, y=400)

# 后续其他代码保持原有逻辑即可
额外注意点

你现有代码里同时对text_box调用了pack()和place()两种布局方法,Tkinter同一父容器下只能用一种布局管理方式,混用会导致布局失效,建议删掉其中不需要的布局调用。

内容的提问来源于stack exchange,提问作者odin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:45:07