专业视觉设计师,5年的B端产品经理职业生涯,最近热衷编程,追求全栈工程师,厚积薄发。 动人的一个月玩弄python GUI。 记录自学的过程,纯粹喜欢编程,与大家分享。
我们先来看看简单的canvas动画。 是桌面弹簧球
源代码:
导入键
导入随机
root=tkinter.Tk (
root.title(「envent”)。
root.geometry(「400x3001010”)
HB=Tkinter.canvas(root,width=400,height=300,bg='#189fff ' ) )
hb.pack ()。
oval=HB.create _ oval (0,0,16,16,fill=“red”,outline=“”)
PZT=[ 0,1,1 ] #状态(0,1,2,3 )如下,随机移动x,随机移动y
defcallback(canvas=HB,canvas_w=400,canvas_h=300,r=10,state=pzzt ) :
zb=canvas.Bbox(oval ) #获取小球坐标
(条件(() ) ) ) ) )。
ifzb [2]=canvas _ wor (zb [2]==canvas _ wand zb [3]==r ) :#向右碰撞-修正状态向左或碰撞NE; 修正状态,向开关发送
state[0]=1
state [1]=random.randint (1,2 ) ) ) ) ) ) ) ) ) state [1]=random.randint (1,2 ) ) )
state [2]=random.randint (1,2 ) ) ) ) ) ) ) ) ) state [2] ) ) ) state [2] ) ) ) 65
elif zb [0]=0or (zb [0]==0and zb [2]==canvas _ h-r ) :# )左-修正状态右orSW; 修正状态,向NE发送
state[0]=0
state [1]=random.randint (1,3 ) ) ) ) ) ) )。
state [2]=random.randint (3,6 ) ) ) ) )。
elif zb [1]=0or (zb [0]==0and zb [1]==0) :# )与上边碰撞-修正状态为向下或与NW碰撞; 修正状态,向SE发送
state[0]=2
state [1]=random.randint (3,6 ) ) ) ) ) ) ) ) ) ) )。
state [2]=random.randint (1,3 ) ) ) ) ) ) ) ) ) ) ) )。
elif zb [3]=canvas _ hor (zb [2]==canvas _ wand zb [3]==canvas _ h ) :#冲击下边-修正状态向上或冲击SE; 修正状态,向NW
state[0]=3
state [1]=random.randint (1,5 ) ) ) ) ) ) ) ) )。
state [2]=random.randint (10,20 ) ) ) ) )。
(运动(运动(运动(运动) )。
if state[0]==0:
canvas.move(oval,state[1],-state[2] )右、上或ne-指正负
elif state[0]==1:
canvas.move(oval,-state[1],state[2] )左、下、SW-正负
elif state[0]==2:
canvas.move(oval,state[1],state[2] ) #指向下、右、se—正
elif state[0]==3:
指canvas.move(oval,-state[1],-state[2] ) #上、左、NW-负
canvas.after(30,callback ) )。
callback () )
root.mainloop (