在Python龟程序中输入按钮没有响应

时间:2018-06-06 19:47:10

标签: python turtle-graphics

import turtle
import random

wn = turtle.Screen() #sets the screen
wn.setup(1000,900)
wn.screensize(2000,2000)
ad = turtle.Turtle() #names the turtle
ad.shape("circle") #changes turtles or "ad's" shape
ad.speed("fastest")

r = int(60) #CHANGES THE SIZE OF THE WRITING


x = int(-950)
y = int(200)


ad.penup()
ad.goto(x,y)
def enter():
     ad.penup()
     y -= 100
     ad.goto(x,y)
wn.onkey(lambda: enter(), "Return")
wn.listen()

尝试在乌龟中进行输入按钮,但这不起作用。 它表示局部变量存在错误。

1 个答案:

答案 0 :(得分:0)

虽然你的问题是你的global y函数中缺少enter()语句,但代码中有很多 noise 我们应该删除它以使其成为更好MVCE

import random  # not used so leave out of SO question example
r = int(60) # ditto

x = int(-950)  # int() not needed for ints
y = int(200)  # ditto

wn.onkey(lambda: enter(), "Return")  # lambda not needed

虽然我们可以通过添加global y语句来修复此问题,但我更喜欢简单地查询乌龟本身并避免全局:

from turtle import Turtle, Screen

def enter():
    ad.sety(ad.ycor() - 100)

X, Y = -950, 200

wn = Screen()
wn.setup(1000, 1000)  # visible field
wn.screensize(2000, 2000)  # total field

ad = Turtle("circle")
ad.speed("fastest")
ad.penup()
ad.goto(X, Y)

wn.onkey(enter, "Return")
wn.listen()

wn.mainloop()

注意,您将乌龟放在屏幕的可见部分,因此您需要滚动到窗口的左侧以查看乌龟光标。一旦你这样做,你可以通过点击“返回”来移动它。