Кнопка ввода в программе Python Turtle не отвечает - PullRequest
0 голосов
/ 06 июня 2018
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 голосов
/ 06 июня 2018

Хотя вашей непосредственной проблемой является отсутствие оператора global y в вашей функции enter(), в вашем коде много шума , который мы должны устранить, чтобы сделать его лучше 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()

Обратите внимание, вы поместили черепаху за пределы видимой части экрана, поэтому вам нужно прокрутить ее до левой стороны окна, чтобы увидеть курсор черепахи.Как только вы это сделаете, вы можете переместить его вниз, нажав «Return».

...