在运行我的脚本时,在屏幕中央短暂停留一秒钟会生成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 for Windows下载版本3.7.3进行编码
答案 0 :(得分:0)
一旦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')
不不属于循环,也不属于称为重复的函数。它们应该是您的设置代码的一部分,并且只能被称为一次。