1效果图 2说明 2。1环境:python3。8 2。2熟悉python和tkinter的相关知识 2。3尤其复习tkinter的canvas、createoval、move的相关知识 2。4注释清楚,小白秒懂 3代码讲解 3。1第1步:导入模块fromtkinterimportfrommathimportcos,sin,piimporttime 3。2第2步:窗口定义rootTk()窗口标题名root。title(sunearthmoon)窗口大小和位置root。geometry(800x800600200)设置窗口的背景颜色,以黑色为例root〔background〕black画布的大小和背景颜色设置cCanvas(root,width600,height600,bgblack,highlightthickness0)也可以:减去画布边框的厚度c。config(highlightthickness0)画布的位置c。place(x150,y150,anchornw) 3。3第3步:画太阳,地球线,地球,月球太阳c。createoval(200,175,250,225,fillred)地球轨迹线圈,长300,高200c。createoval(150,100,450,300,outlinegreen,width5)地球相关地球初始坐标xo,yo0,0地球earthc。createoval(xo10,yo10,xo10,yo10,fillblue)月球相关月球moonc。createoval(xo10,yo2,xo15,yo2,fillgrey)月球初始坐标mxo,myo15,0 3。4第4步:循环,报错处理,动画挂起初始化角度tt0去除强制关闭窗口的报错try:while1:每次增加t0。01pi地球轨迹线,初始化坐标150,100与450,300的关系x150cos(t)300y100sin(t)200月球中心坐标点,可变mx20sin(12t)my15cos(12t)可变的地球中心点坐标dxxxodyyyo可变的月球中心点坐标dmxmxmxodmymymyo没有这个地球和月球就掉落而消失回归xoxyoy回归mxomxmyomy地球运动,x和y坐标点,可变c。move(earth,dx,dy)月球运动,x和y坐标点,可变c。move(moon,dxdmx,dydmy)更新c。update()间隔时间time。sleep(0。05)如果关闭窗口报错,跳过exceptTclError:pass窗口循环挂起c。mainloop()