gpt4 book ai didi

python - 如何在 turtle 屏幕上输出变量?

转载 作者:行者123 更新时间:2023-12-01 03:35:41 25 4
gpt4 key购买 nike

我想在 Turtle 屏幕上输出一个变量。但当变量发生变化时,之前的值仍然显示在屏幕上。因此,这些值是重叠的。方法 turtle.clear() 并不能解决问题,因为它会导致值在屏幕上闪烁。

# -*- coding: utf-8 -*-

import turtle
from math import *

s = turtle.Screen()
body = turtle.Turtle()
time_t = turtle.Turtle()
time_t.penup() # For time output
time_t.ht()

def Motion(A=100, omega=5, N=2):
n = 0
t = 0

def x_pos(t):
return A*cos(0.5*omega*t) # x

def y_pos(t):
return A*sin(1*omega*t) # Кy

body.setposition(x_pos(t),y_pos(t))
body.pendown()

while n<N:
body.setposition(x_pos(t),y_pos(t))
t = round(t + 0.01,2)
time_t.setposition(200,200) # In this position I want to output variable
time_t.write("t = " + str(t)) # Show the time variable t on screen
if int(round(t / (2*pi/omega),2)) == n + 1:
n = n + 1


body.penup()
body.color('red')
body.shape('circle')
Motion()
turtle.done()

最佳答案

我们可以采取一些措施来改善这种情况。第一种是利用turtle的Undo功能删除旧的时间信息作为清除的方式。其次,我们可以使用 tracer()update() 来控制动画更新以控制闪烁:

from turtle import Turtle, Screen
from math import pi, sin, cos

screen = Screen()

body = Turtle(shape="circle")
body.color('red')
body.penup()

time_t = Turtle(visible=False) # For time output
time_t.penup()
time_t.setposition(200, 200) # In this position I want to output variable
time_t.write("t = " + str(0))

screen.tracer(0) # Control animation updates ourself

def Motion(A=100, omega=5, N=2):
n = 0
t = 0

def x_pos(t):
return A * cos(0.5 * omega * t) # x

def y_pos(t):
return A * sin(1 * omega * t) # Ky

body.setposition(x_pos(t), y_pos(t))
body.pendown()

while n < N:
body.setposition(x_pos(t), y_pos(t))

t = round(t + 0.01, 2)
time_t.undo() # undraw the last time update
time_t.write("t = " + str(t)) # Show the time variable t on screen
screen.update()

if int(round(t / (2 * pi / omega), 2)) == n + 1:
n = n + 1

Motion()

screen.exitonclick()

顺便说一句, turtle 的使用非常酷!让我们更进一步:使运动连续;在动画期间的任何时刻启用点击退出;在 turtle 处于初始位置之前不要让其 body 可见;增大字体大小以便我们可以看到时间:

from turtle import Turtle, Screen
from math import pi, sin, cos

def motion():
global n, t
body.setposition(x_pos(t), y_pos(t))

t = round(t + 0.01, 2)
time_t.undo() # undraw the last time update
time_t.write("t = " + str(t), font=font) # Show the time variable t on screen
screen.update()

if int(round(t / (2 * pi / omega), 2)) == n + 1:
n = n + 1
if (n >= N):
n = t = 0

screen.ontimer(motion, 10)

def x_pos(t):
return A * cos(0.5 * omega * t) # x

def y_pos(t):
return A * sin(1 * omega * t) # Ky

A = 100
omega = 5
N = 2
n = t = 0

font = ("Arial", 12, "normal")

screen = Screen()
screen.tracer(0) # Control animation updates ourself

body = Turtle(shape="circle", visible=False)
body.color('red')
body.penup()
body.setposition(x_pos(t), y_pos(t))
body.pendown()
body.showturtle()

time_t = Turtle(visible=False) # For time output
time_t.penup()
time_t.setposition(200, 200) # In this position I want to output variable
time_t.write("t = " + str(0))

screen.ontimer(motion, 100)

screen.exitonclick()

关于python - 如何在 turtle 屏幕上输出变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40418203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com