1 效果圖
2 說明
=====
2.1 環境:python3.8
2.2 熟悉python和tkinter的相關知識
2.3 尤其複習tkinter的canvas、create_oval、move的相關知識
2.4 註釋清楚,小白秒懂
3 程式碼講解
========
3.1 第1步:匯入模組
from tkinter import *from math import cos, sin, piimport time
3.2 第2步:視窗定義
root = Tk()#視窗標題名root.title('sun-earth-moon')#視窗大小和位置root.geometry('800x800+600+200')# 設定視窗的背景顏色,以“黑色”為例root["background"] = "black"#畫布的大小和背景顏色設定c = Canvas(root, width=600,height=600,bg='black',highlightthickness=0)#也可以:減去畫布邊框的厚度#c.config(highlightthickness=0)#畫布的位置c.place(x=150,y=150,anchor='nw')
3.3 第3步:畫太陽,地球線,地球,月球
#太陽c.create_oval(200,175,250,225, fill='red')#地球軌跡線圈,長300,高200c.create_oval(150,100,450,300,outline='green', width=5)#地球相關#地球初始座標x_o, y_o = 0,0#地球earth = c.create_oval(x_o-10,y_o-10,x_o+10,y_o+10, fill='blue')#月球相關#月球moon = c.create_oval(x_o+10,y_o-2,x_o+15,y_o+2, fill='grey')#月球初始座標m_xo, m_yo = 15,0
3.4 第4步:迴圈,報錯處理,動畫掛起
#初始化角度tt = 0#去除強制關閉視窗的報錯try: while 1: #每次增加 t += 0.01*pi #地球軌跡線,初始化座標150,100與450,300的關係 x = 150*cos(t) + 300 y = 100*sin(t) + 200 #月球中心座標點,可變 m_x = 20*sin(12*t) m_y = -15*cos(12*t) #可變的地球中心點座標 dx = x - x_o dy = y - y_o #可變的月球中心點座標 dm_x = m_x - m_xo dm_y = m_y - m_yo #沒有這個地球和月球就掉落而消失 #迴歸 x_o = x y_o = y #迴歸 m_xo = m_x m_yo = m_y #地球運動,x和y座標點,可變 c.move(earth, dx, dy) #月球運動,x和y座標點,可變 c.move(moon, dx+dm_x, dy+dm_y ) #更新 c.update() #間隔時間 time.sleep(0.05)#如果關閉視窗報錯,跳過except TclError: pass#視窗迴圈掛起c.mainloop()
最新評論