给定速度与角度参数,如何在Python Turtle中实现触发绘图功能
实现方案
- 你梳理的公式计算的是斜抛运动的水平位移,确实需要将计算结果赋值给变量
d用来做判断。 - 完整实现逻辑如下:
- 确保已经导入所需依赖
import math import tkinter as tk import turtle
- 编写按钮点击触发的回调函数,在函数内完成取值、计算、判断、绘图逻辑
def trigger_draw(): # 捕获输入异常,避免用户输入非数字时报错 try: input_speed = int(speed1.get()) input_angle = int(angle1.get()) # math.cos/math.sin接收弧度参数,需要把输入的角度转成弧度 angle_rad = math.radians(input_angle) # 计算结果赋值给d d = (input_speed * math.cos(angle_rad)) * (input_speed * math.sin(angle_rad) / 4.9) if d > 25: # 此处替换为你需要的d>25时的turtle绘图逻辑,示例为绘制抛射轨迹 turtle.clear() turtle.penup() turtle.goto(0, 0) turtle.pendown() time_step = 0.05 g = 9.8 t = 0 while True: x = input_speed * math.cos(angle_rad) * t y = input_speed * math.sin(angle_rad) * t - 0.5 * g * t **2 if y < 0: break turtle.goto(x, y) t += time_step else: # 此处替换为d<=25时的对应逻辑 pass except ValueError: # 输入非数字时的提示逻辑,可自行补充 pass
- 给你的按钮组件绑定上述回调函数即可
# 给你的按钮加command参数绑定回调函数即可,代码中的「你的窗口对象」替换为你实际定义的tk窗口变量 draw_button = tk.Button(你的窗口对象, text="执行绘图", command=trigger_draw) draw_button.pack()
*注意:如果你的turtle是嵌入到tkinter窗口的,只需要把上面的绘图逻辑里的turtle替换为你嵌入的TurtleScreen对象即可。
内容的提问来源于stack exchange,提问作者UKKOW
相关产品推荐
相关产品推荐

