lisp的vla函数画矩形_python之:tkinter画哆啦A梦
生活随笔
收集整理的這篇文章主要介紹了
lisp的vla函数画矩形_python之:tkinter画哆啦A梦
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
痛苦啊!tkinter資料不是很多,學習了3天了,至今沒找到官方文檔,畫arc時遇到了困難,不知道起始角度怎么寫,找了好多地方都沒有介紹,最終無意間找到了小甲魚整理的文檔,終于解決。
此外,tkinter的畫圓、弧、橢圓的方式,實在是太業余了。用起來很不順手。難受!
思路:
工具展示:
1.鼠標點哪里就顯示哪里的坐標,嚴格來說應該做一下canvasx(),canvasy()坐標系轉換的,懶得做了。
2.點change按鈕可以調整圖層前后,方便查看所畫圖形和原圖契合度
所畫圖形在前所畫圖形在后繪制過程中的代碼: from tkinter import *#初始化 root=Tk() global showflag v=[IntVar(),IntVar()] showflag=False #函數hide()所用 w=Canvas(root,width=400,height=400,bg="pink")def drawcircle(r,x,y,color):#自定義畫圓函數,參數為:半徑、圓心X,圓心Y,填充顏色rhead1=rxhead1=xyhead1=yw.create_oval(xhead1-rhead1,yhead1-rhead1,xhead1+rhead1,yhead1+rhead1,fill=color)#臨時設置的背景原圖,方便查看我畫的和原圖的契合度 img=PhotoImage(file=r'C:UsersAdministrator.USER-20180904HODesktoppythonameng.gif') cankao1=w.create_image((204,203),image=img)#輔助線 w.create_line(0,200,400,200,fill="gray",dash=(4)) w.create_line(200,0,200,400,fill="gray",dash=(4))# 畫頭部(眼睛部分都是對稱的,因為只畫一次,直接寫數字了。) drawcircle(90,200,139,"dodgerblue") #頭外圈 drawcircle(75,200,154,"white") #頭內圈 w.create_oval(163,64,200,109,fill="white") ##眼眶外圈 w.create_oval(400-163,64,400-200,109,fill="white") w.create_oval(185,79,196,93,fill="black") #黑眼球 w.create_oval(400-185,79,400-196,93,fill="black") w.create_oval(189,82,193,90,fill="white") #黑眼球反白 w.create_oval(400-189,82,400-193,90,fill="white") drawcircle(7,200,105,"red") #鼻子 w.create_line(200,112,200,178,fill="black")#裂唇 w.create_line(148,113,185,125,fill="black")#胡子 w.create_line(140,136,185,136,fill="black") w.create_line(148,159,185,147,fill="black") w.create_line(400-148,113,400-185,125,fill="black") w.create_line(400-140,136,400-185,136,fill="black") w.create_line(400-148,159,400-185,147,fill="black") w.create_arc(135,50,265,178,start=-48,extent=-84,style=ARC)#嘴巴#畫身體 w.create_rectangle(133,205,267,308,fill="dodgerblue") #主體 w.create_polygon((133,208),(133,246),(116,254),(106,236),outline="black",fill="dodgerblue") #手臂 w.create_polygon((400-133,208),(400-133,246),(400-116,254),(400-106,236),outline="black",fill="dodgerblue") drawcircle(15,102,250.5,"white")#手 drawcircle(15,400-102,250.5,"white") w.create_oval(117,300,192,329,fill="white")#腳 w.create_oval(400-117,300,400-192,329,fill="white") w.create_arc(188,301,212,325,start=30,extent=120,outline="white",style=PIESLICE,fill="white") #褲襠,先用白邊白色扇形將藍色擦除 w.create_arc(188,301,212,325,start=30,extent=120,style=ARC) #褲襠,再用黑邊白色弧形將描褲襠邊緣 /:笑哭#畫服飾 drawcircle(52,200,240,"white")#白肚皮 w.create_arc(148,188,252,292,start=45,extent=90,style=ARC,outline="white",width=3) #用寬一些的白線擦掉白肚皮上面不需要的部分 w.create_line(133,202,267,202,capstyle=ROUND,fill="black",width=12) #小圍巾,想做到原圖的黑邊紅里效果,就畫了一根粗黑線和一根細紅線,邊緣正好差1個像素。 w.create_line(133,202,267,202,capstyle=ROUND,fill="red",width=10) #小圍巾,細紅線 w.create_arc(163,201,237,275,extent=-180,style=PIESLICE,fill="white") #肚兜 drawcircle(11,200,212,"yellow") #小鈴鐺 drawcircle(2.5,200,217,"red") #小鈴鐺裝飾 w.create_line(200,219,200,223,fill="black") w.create_line(190,212,212,212,fill="black") w.create_line(191,209,211,209,fill="black")def location(event): #定義一個關聯事件,當鼠標點擊時,顯示點擊坐標,方便找點 v[0]=event.xv[1]=event.yprint("坐標:",v[0],v[1])w.bind('<Button-1>',location)def hide(): #設計一個button來回切換背景和所畫圖形的位置,以此查看契合度。global showflagif showflag==True:w.lower(cankao1)showflag=Falseelse:w.lift(cankao1)showflag=True Button(root,text="change",command=hide).pack(side=BOTTOM)w.pack() mainloop()繪制完成后,注釋掉工具
最終代碼
from tkinter import *#初始化 root=Tk() '''global showflag v=[IntVar(),IntVar()] showflag=False #函數hide()所用'''w=Canvas(root,width=400,height=400,bg="pink")def drawcircle(r,x,y,color):#自定義畫圓函數,參數為:半徑、圓心X,圓心Y,填充顏色rhead1=rxhead1=xyhead1=yw.create_oval(xhead1-rhead1,yhead1-rhead1,xhead1+rhead1,yhead1+rhead1,fill=color)#臨時設置的背景原圖,方便查看我畫的和原圖的契合度 #img=PhotoImage(file=r'C:UsersAdministrator.USER-20180904HODesktoppythonameng.gif') #cankao1=w.create_image((204,203),image=img)#輔助線 w.create_line(0,200,400,200,fill="gray",dash=(4)) w.create_line(200,0,200,400,fill="gray",dash=(4))# 畫頭部(眼睛部分都是對稱的,因為只畫一次,直接寫數字了。) drawcircle(90,200,139,"dodgerblue") #頭外圈 drawcircle(75,200,154,"white") #頭內圈 w.create_oval(163,64,200,109,fill="white") ##眼眶外圈 w.create_oval(400-163,64,400-200,109,fill="white") w.create_oval(185,79,196,93,fill="black") #黑眼球 w.create_oval(400-185,79,400-196,93,fill="black") w.create_oval(189,82,193,90,fill="white") #黑眼球反白 w.create_oval(400-189,82,400-193,90,fill="white") drawcircle(7,200,105,"red") #鼻子 w.create_line(200,112,200,178,fill="black")#裂唇 w.create_line(148,113,185,125,fill="black")#胡子 w.create_line(140,136,185,136,fill="black") w.create_line(148,159,185,147,fill="black") w.create_line(400-148,113,400-185,125,fill="black") w.create_line(400-140,136,400-185,136,fill="black") w.create_line(400-148,159,400-185,147,fill="black") w.create_arc(135,50,265,178,start=-48,extent=-84,style=ARC)#嘴巴#畫身體 w.create_rectangle(133,205,267,308,fill="dodgerblue") #主體 w.create_polygon((133,208),(133,246),(116,254),(106,236),outline="black",fill="dodgerblue") #手臂 w.create_polygon((400-133,208),(400-133,246),(400-116,254),(400-106,236),outline="black",fill="dodgerblue") drawcircle(15,102,250.5,"white")#手 drawcircle(15,400-102,250.5,"white") w.create_oval(117,300,192,329,fill="white")#腳 w.create_oval(400-117,300,400-192,329,fill="white") w.create_arc(188,301,212,325,start=30,extent=120,outline="pink",style=PIESLICE,fill="pink") #褲襠,先用白邊白色扇形將藍色擦除,最終完成時修改為粉色 w.create_arc(188,301,212,325,start=30,extent=120,style=ARC) #褲襠,再用黑邊白色弧形將描褲襠邊緣 /:笑哭#畫服飾 drawcircle(52,200,240,"white")#白肚皮 w.create_arc(148,188,252,292,start=45,extent=90,style=ARC,outline="white",width=3) #用寬一些的白線擦掉白肚皮上面不需要的部分 w.create_line(133,202,267,202,capstyle=ROUND,fill="black",width=12) #小圍巾,想做到原圖的黑邊紅里效果,就畫了一根粗黑線和一根細紅線,邊緣正好差1個像素。 w.create_line(133,202,267,202,capstyle=ROUND,fill="red",width=10) #小圍巾,細紅線 w.create_arc(163,201,237,275,extent=-180,style=PIESLICE,fill="white") #肚兜 drawcircle(11,200,212,"yellow") #小鈴鐺 drawcircle(2.5,200,217,"red") #小鈴鐺裝飾 w.create_line(200,219,200,223,fill="black") w.create_line(190,212,212,212,fill="black") w.create_line(191,209,211,209,fill="black")'''def location(event): #定義一個關聯事件,當鼠標點擊時,顯示點擊坐標,方便找點 v[0]=event.xv[1]=event.yprint("坐標:",v[0],v[1])w.bind('<Button-1>',location)def hide(): #設計一個button來回切換背景和所畫圖形的位置,以此查看契合度。global showflagif showflag==True:w.lower(cankao1)showflag=Falseelse:w.lift(cankao1)showflag=True Button(root,text="change",command=hide).pack(side=BOTTOM) '''w.pack() mainloop()最終效果:
總結
以上是生活随笔為你收集整理的lisp的vla函数画矩形_python之:tkinter画哆啦A梦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 把列表变成列向量_线性代数的本质11 抽
- 下一篇: 2019深圳杯获奖论文_2019年第六届