鱼C论坛

 找回密码
 立即注册
查看: 144|回复: 5

[已解决]代码运行不报错但是运行出来不显示,求高人指点

[复制链接]
发表于 2024-10-23 22:29:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import random
from math import sin,cos,pi,log
from tkinter import *



CANVAS_WIDTH=840
CANVAS_HEIGHT=680
CANVAS_CENTER_X=CANVAS_WIDTH/2
CANVAS_CENTER_Y=CANVAS_HEIGHT/2
IMAGE_ENLARGE = 11
HEART_COLOR="pink"



def heart_function(t,shrink_ratio:float=IMAGE_ENLARGE):
    """
    "爱心函数生成器"
   :param shrink_ratio:
   :param t:
    :return:
    """
    x=16*(sin(t) **3)
    y=-(13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(3*t)-cos(4*t))

    x*=shrink_ratio
    y*=shrink_ratio

    x+=CANVAS_CENIER_X
    y+=CANVAS_CENIER_Y

    return int(x),int(y)
   
最佳答案
2024-10-24 10:25:52
变量名拼写错误:CANVAS_CENIER_X 和 CANVAS_CENIER_Y 应该是 CANVAS_CENTER_X 和 CANVAS_CENTER_Y。
heart_function 函数中的 t 变量应该是一个从 0 到 2π 的值,但是在你的代码中并没有调用这个函数来生成点。
你的代码中没有创建 Tkinter 窗口和画布,也没有将心形函数的点绘制到画布上。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-23 22:32:20 | 显示全部楼层
你提供的代码片段中有一个拼写错误,导致心形函数生成器无法正常工作:

在 `heart_function` 函数中:
x += CANVAS_CENIER_X  # 错误
y += CANVAS_CENIER_Y  # 错误
应该是:
x += CANVAS_CENTER_X  # 正确
y += CANVAS_CENTER_Y  # 正确

另外,确保有代码调用 `heart_function` 进行绘图,实现完整的显示功能。例如:
def draw_heart(canvas):
    for i in range(3000):
        t = random.uniform(0, 2 * pi)
        x, y = heart_function(t)
        canvas.create_line(x, y, x+1, y, fill=HEART_COLOR)

root = Tk()
canvas = Canvas(root, width=CANVAS_WIDTH, height=CANVAS_HEIGHT, bg='white')
canvas.pack()
draw_heart(canvas)
root.mainloop()

这样可以在画布上绘制出心形。请确保结合完整代码运行。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-24 10:25:52 | 显示全部楼层    本楼为最佳答案   
变量名拼写错误:CANVAS_CENIER_X 和 CANVAS_CENIER_Y 应该是 CANVAS_CENTER_X 和 CANVAS_CENTER_Y。
heart_function 函数中的 t 变量应该是一个从 0 到 2π 的值,但是在你的代码中并没有调用这个函数来生成点。
你的代码中没有创建 Tkinter 窗口和画布,也没有将心形函数的点绘制到画布上。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-24 12:15:23 | 显示全部楼层
很cool的阳 发表于 2024-10-24 10:25
变量名拼写错误:CANVAS_CENIER_X 和 CANVAS_CENIER_Y 应该是 CANVAS_CENTER_X 和 CANVAS_CENTER_Y。
hear ...

哥,方便纠正一下代码吗?小白一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-24 13:00:12 | 显示全部楼层
import random
from math import sin, cos, pi
from tkinter import *

CANVAS_WIDTH = 840
CANVAS_HEIGHT = 680
CANVAS_CENTER_X = CANVAS_WIDTH / 2
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2
IMAGE_ENLARGE = 11
HEART_COLOR = "pink"

def heart_function(t, shrink_ratio: float = IMAGE_ENLARGE):
    """
    "爱心函数生成器"
    :param shrink_ratio:
    :param t:
    :return:
    """
    x = 16 * (sin(t) ** 3)
    y = -(13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t))
   
    x *= shrink_ratio
    y *= shrink_ratio
   
    x += CANVAS_CENTER_X
    y += CANVAS_CENTER_Y
   
    return int(x), int(y)

def draw_heart(canvas, t_values):
    for t in t_values:
        x, y = heart_function(t)
        canvas.create_oval(x-10, y-10, x+10, y+10, fill=HEART_COLOR)

root = Tk()
canvas = Canvas(root, width=CANVAS_WIDTH, height=CANVAS_HEIGHT)
canvas.pack()

# 生成参数t的值,用于绘制心形
t_values = [i * 0.01 for i in range(0, 700)]

draw_heart(canvas, t_values)

root.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-24 14:52:17 | 显示全部楼层
很cool的阳 发表于 2024-10-24 13:00
import random
from math import sin, cos, pi
from tkinter import *

谢谢哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表