python软件怎么打开画图_Python实现画图软件功能
概述
雖然Python的強(qiáng)項(xiàng)在人工智能,數(shù)據(jù)處理方面,但是對(duì)于日常簡(jiǎn)單的應(yīng)用,Python也提供了非常友好的支持(如:Tkinter),本文主要一個(gè)簡(jiǎn)單的畫圖小軟件,簡(jiǎn)述Python在GUI(圖形用戶界面)方面的應(yīng)用,僅供學(xué)習(xí)分享使用,如有不足之處,還請(qǐng)指正。
設(shè)計(jì)思路
頁(yè)面布局:主要分為上下兩部分 a. 繪圖區(qū)域,本例以Canvas實(shí)現(xiàn) b. 下部:功能區(qū),由按鈕實(shí)現(xiàn)
事件監(jiān)聽:通過(guò)給功能按鈕綁定事件,來(lái)實(shí)現(xiàn)不同的功能,如:繪線,繪矩形等功能。
繪圖區(qū)域:監(jiān)聽鼠標(biāo)左鍵的按下(開始繪圖)和抬起(停止繪圖),再根據(jù)不同的按鈕實(shí)現(xiàn)繪制不同的圖形。
涉及知識(shí)點(diǎn)
開發(fā)工具:Python3.7 , PyCharm2019
Tkinter 是 Python 的標(biāo)準(zhǔn) GUI 庫(kù)。Python 使用 Tkinter 可以快速的創(chuàng)建 GUI 應(yīng)用程序。
Canvas控件提供了一個(gè)自定義的繪圖區(qū)域,可以通過(guò)不同的函數(shù)來(lái)繪制不同的圖形。
繪制直線 create_line(self.x,self.y,event.x,event.y,fill=self.fgcolor)
繪制帶箭頭的直線 create_line(self.x,arrow=LAST,fill=self.fgcolor)
繪制矩形 create_rectangle(self.x,outline=self.fgcolor)
繪制曲線,是通過(guò)繪制不同的點(diǎn)來(lái)實(shí)現(xiàn)的
清除圖形 drawpad.delete('all')
Button 按鈕控件,通過(guò)綁定(bind)不同的監(jiān)聽事件來(lái)實(shí)現(xiàn)不同的功能。
name屬性設(shè)置按鈕的名稱,
text屬性設(shè)置按鈕的顯示文本。
bind 綁定事件
示例效果圖
本例主要實(shí)現(xiàn)繪制直線,帶箭頭的直線,曲線,矩形,清除等功能,如下所示:
核心代碼
在本例中,主要功能如下:
創(chuàng)建畫板
1 """創(chuàng)建畫圖區(qū)域"""
2 self.drawpad = Canvas(self,width=win_width,height=win_height,bg=bgcolor)3 self.drawpad.pack()
View Code
創(chuàng)建按鈕
1 #創(chuàng)建按鈕
2 self.btn_start = Button(self,name='start',text=開始')3 self.btn_start.pack(side=left4 self.btn_pen = Button(self,1)">pen畫筆5 self.btn_pen.pack(side=6 self.btn_rect = Button(self,1)">rect矩形7 self.btn_rect.pack(side=8 self.btn_clear = Button(self,1)">clear清屏9 self.btn_clear.pack(side=10 self.btn_erasor = Button(self,1)">erasor橡皮擦11 self.btn_erasor.pack(side=12 self.btn_line = Button(self,1)">line直線13 self.btn_line.pack(side=14 self.btn_line_arrow = Button(self,1)">line_arrow箭頭直線15 self.btn_line_arrow.pack(side=16 self.btn_color = Button(self,1)">color顏色17 self.btn_color.pack(side=View Code
綁定事件
1 綁定事件
2 self.btn_line.bind(點(diǎn)擊按鈕事件
3 self.btn_line_arrow.bind(4 self.btn_rect.bind(5 self.btn_pen.bind(6 self.btn_erasor.bind(7 self.btn_clear.bind(8 self.btn_color.bind(點(diǎn)擊按鈕事件
View Code
功能實(shí)現(xiàn)
1 defeventManager(self,event):2 name =event.widget.winfo_name()3 print(name)4 self.start_flag =True5 if name == :6 左鍵拖動(dòng)
7 self.drawpad.bind(,self.myline)8 elif name == 9 self.drawpad.bind(10 11 self.drawpad.bind(12 13 self.drawpad.bind(14 15 self.drawpad.bind(16 17 self.drawpad.delete(all18 19 c = askcolor(color=self.fgcolor,title=請(qǐng)選擇顏色20 print(c) c的值 ((128.5,255.99609375,0.0),'#80ff00')
21 self.fgcolor = c[1]22
23 startDraw(self,1)">24 self.drawpad.delete(self.lastdraw)25 ifself.start_flag:26 self.start_flag =False27 self.x =event.x28 self.y =event.y29
30 stopDraw(self,1)">31 self.start_flag =32 self.lastdraw =033
34 myline(self,1)">35 self.startDraw(event)36 self.lastdraw = self.drawpad.create_line(self.x,fill=self.fgcolor)37
38 myline_arrow(self,1)">39 40 self.lastdraw = self.drawpad.create_line(self.x,1)">41
42 myrect(self,1)">43 44 self.lastdraw = self.drawpad.create_rectangle(self.x,outline=45
46 mypen(self,1)">47 48 print(self.x=49 self.drawpad.create_line(self.x,1)">50 self.x =51 self.y =52
53 myerasor(self,1)">54 55 56 self.drawpad.create_rectangle(event.x - 3,event.y - 3,event.x + 3,event.y + 3,1)">57 self.x =58 self.y = event.y
View Code
快捷鍵的實(shí)現(xiàn)
1 self.master.bind(綁定快捷鍵
2 self.master.bind(3 self.master.bind(4 self.master.bind(5 self.drawpad.bind(左鍵釋放按鈕
View Code
快捷鍵功能實(shí)現(xiàn)
1 hotKey(self,1)"> 2 c =event.charif c == r4 self.fgcolor = red'
elif c == g6 self.fgcolor = green7 b8 self.fgcolor = blue9 y10 self.fgcolor = yellow'
View Code
有需要的朋友,可點(diǎn)擊鏈接下載整體代碼,如下所示:
備注
不積跬步,無(wú)以至千里;不積小流,無(wú)以成江海;鍥而舍之,朽木不折,鍥而不舍,金石可鏤。
總結(jié)
以上是編程之家為你收集整理的Python實(shí)現(xiàn)畫圖軟件功能全部?jī)?nèi)容,希望文章能夠幫你解決Python實(shí)現(xiàn)畫圖軟件功能所遇到的程序開發(fā)問(wèn)題。
如果覺得編程之家網(wǎng)站內(nèi)容還不錯(cuò),歡迎將編程之家網(wǎng)站推薦給程序員好友。
本圖文內(nèi)容來(lái)源于網(wǎng)友網(wǎng)絡(luò)收集整理提供,作為學(xué)習(xí)參考使用,版權(quán)屬于原作者。
如您喜歡交流學(xué)習(xí)經(jīng)驗(yàn),點(diǎn)擊鏈接加入編程之家官方QQ群:1065694478
總結(jié)
以上是生活随笔為你收集整理的python软件怎么打开画图_Python实现画图软件功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: Pem私钥pkcs1和pkcs8之间互转
- 下一篇: Ubuntu18搭建SVN可视化工具if
