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

用Python Turtle制作点击游戏时计数数值随机变动该如何修复?

问题根源

  • turtle.onclick()绑定的回调函数默认会自动传入两个参数:点击位置的横坐标x和纵坐标y,你定义的getclick(sq, clicks)里的两个参数实际接收到的是x、y坐标值,不是你预期的sq对象和全局计数变量,所以显示的数值都是点击位置的坐标,才会在-49~49之间波动。
  • 要在函数内修改全局作用域的clicks变量,必须用global关键字声明,否则函数内操作的是同名局部变量,修改结果不会同步到全局计数上。

修复步骤

  1. 调整getclick函数的参数,保留两个占位参数接收自动传入的x、y坐标即可,不需要额外传参
  2. 函数开头声明global clicks,指定操作的是全局计数变量
  3. 可选补充主循环逻辑,避免程序运行完成后窗口直接退出

修复后完整代码

import turtle as t

# 窗口配置
wn = t.Screen()
wn.bgcolor("DarkSlateGray")
wn.setup(width=1366, height=768)

# 点击计数初始化
clicks = 0

# 可点击方块配置
sq = t.Turtle()
sq.speed(0)
sq.shape("square")
sq.color("coral2")
sq.shapesize(stretch_wid=5, stretch_len=5)
sq.penup()
sq.goto(0,0)

# 计数文本画笔配置
pen = t.Turtle()
pen.speed(0)
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 270)
pen.write("Times clicked: 0", align="center", font=("Comic Sans MS", 24, "normal"))

# 点击回调函数
def getclick(_, __): # 两个占位符承接自动传入的x、y坐标,不需要使用可以忽略
    global clicks
    clicks += 1
    pen.clear()
    pen.write("Times clicked: {}".format(clicks), align="center", font=('Comic Sans MS', 24, 'normal'))

# 绑定点击事件
sq.onclick(getclick)
# 启动窗口主循环
wn.mainloop()

内容的提问来源于stack exchange,提问作者clown person guy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:21:00