Призраки с помощью черепахи - PullRequest
0 голосов
/ 17 мая 2019

При запуске моего скрипта GIF или метка рисования (оба включены в мой код) генерируются в центре экрана в течение короткой секунды, прежде чем они перемещаются в назначенное место.Зачем?Разве функция penup() не должна это исправить?

Я пытаюсь зациклить свой GIF-файл, чтобы он обновлялся и отслеживался по всему экрану, сохраняя при этом мои другие активы статичными.Это вызывает какие-то проблемы с обновлением?

Я пробовал hideturtle(), но это скрывает то, что я сгенерировал, а не оригинальное сообщение в центре моего экрана.

# Baikonur Cosmodrome

lat = 45.86
lon = 63.31
location = turtle.Turtle()
location.penup()
location.color('yellow')
location.goto(lon, lat)
location.dot(5)
location.hideturtle()
url = 'http://api.open-notify.org/iss-pass.json'
url = url + '?lat=' +str(lat) + '&lon=' + str(lon)
response = urllib.request.urlopen(url)
result = json.loads(response.read())
over = result['response'][1]['risetime']
style = ('Arial', 6, 'bold')
location.write(time.ctime(over), font=style)
turtle.hideturtle()

def Spacestation_Tracking():

url = 'http://api.open-notify.org/iss-now.json'
response = urllib.request.urlopen(url)
result = json.loads(response.read())

location = result['iss_position']
lat = float(location['latitude'])
lon = float(location['longitude'])
print ('latitude: ', lat)
print ('longitude: ', lon)

#Draw the map and the ISS ontop of it the ISS will move to the go to coordinates
screen = turtle.Screen()
screen.setup(1980,1020)
screen.setworldcoordinates(-180, -90, 180, 90)
screen.bgpic('world3.png')
screen.register_shape('iss3.gif')
iss = turtle.Turtle()
iss.shape('iss3.gif')
iss.setheading(90)

iss.penup()
iss.goto(lon, lat)
time.sleep(5)
while True:
Spacestation_Tracking()     

Нет сообщений об ошибках до тех пор, пока я не закрою окно, так как в настоящее время нет способа сломать программу.Я ожидал, что в заданных координатах появится чистая точка, а GIF будет перемещаться и обновляться, не возвращаясь в центр каждый раз.

Я кодирую в Windows 10 с использованием Python для Windows, версия загрузки 3.7.3

1 Ответ

0 голосов
/ 17 мая 2019

Черепаха будет видна, как только вернется turtle.Turtle(), penup() будет на один шаг слишком поздно.Вместо этого я рекомендую:

lat = 45.86
lon = 63.31

location = turtle.Turtle(visible=False)
location.penup()
location.color('yellow')
location.goto(lon, lat)
location.dot(5)

Это устраняет необходимость вызова hideturtle() после dot(), поскольку черепаха уже скрыта, а метод dot() не требует, чтобы черепаха была видимой,Точно так же я бы предложил:

iss = turtle.Turtle(visible=False)
iss.shape('iss3.gif')
iss.penup()
iss.setheading(90)
iss.goto(lon, lat)
iss.showturtle()

, чтобы скрыть всю конфигурацию вашей черепахи, и в конце вызвать showturtle(), чтобы отобразить готовый продукт.

Однако трудно сказать наверняка, какВаш пример кода не имеет правильного отступа, такие команды как:

screen = turtle.Screen()
screen.setup(1980,1020)
screen.setworldcoordinates(-180, -90, 180, 90)
screen.bgpic('world3.png')
screen.register_shape('iss3.gif')
iss = turtle.Turtle()
iss.shape('iss3.gif')

не принадлежат ни к циклу , ни к функции, которая неоднократно вызывается .Они должны быть частью вашего установочного кода и называться один раз .

...