Python使用tkinter製作一個簡易的繪圖程式四(Python GUI程式設計)

前幾篇,我們使用Python中tkinter庫製作了一個簡易的畫圖板程式,實現了圓、橢圓、矩形、直線等圖形的繪製功能。但是,繪圖效果沒有想象中好看,我們只是拖動滑鼠實現了繪圖功能,對於滑鼠當前位置及我們要繪製的圖形的樣子是什麼?我們沒法實時掌握,如果能在繪製時用虛線展示我們繪製圖形的樣子,是不是看起來就高大上了?下面,我們來具體實現一下。

先看下效果吧

Python使用tkinter製作一個簡易的繪圖程式四(Python GUI程式設計)

拖動滑鼠時顯示繪圖軌跡

Python使用tkinter製作一個簡易的繪圖程式四(Python GUI程式設計)

釋放滑鼠後畫出圖形

繪製圖形時顯示滑鼠繪製的軌跡,滑鼠釋放後,結束顯示並畫出我們需要的圖形。

分 析

要想實現這個功能,起始,想想很簡單,就是在滑鼠移動的時候畫出想要繪製的圖形,並將之前繪製的圖形擦除掉即可,但是問題來了,如果每次都繪製然後顯示,重新整理畫板,我們的內容跟重新整理率是跟不上的。有沒有好一點的解決辦法呢?當然有了,在類的屬性中我們定義一個self。temp_gui,並且將其設定為None,這就是Python的強大之處了,temp_gui用來儲存我們之前繪製的圖形類。實現這個功能的步驟如下:

滑鼠移動時判斷起始點是否符合繪圖要求(座標大於零)

如果滿足要求則判斷self.temp_gui是否為空

如果self.temp_gui不為空則清除

如果self.temp_gui為空則開始繪製虛線圖

程式碼演示

不贅述,主要程式碼如下所示。

Python使用tkinter製作一個簡易的繪圖程式四(Python GUI程式設計)

滑鼠移動時繪製圖形軌跡

行83-行86用於判斷是否符合繪圖要求,行87開始判斷各種圖形的繪圖開關是否開啟,如果開啟,隨著滑鼠的移動會繪製響應的圖形虛線軌跡。

Python使用tkinter製作一個簡易的繪圖程式四(Python GUI程式設計)

滑鼠釋放後清除軌跡並繪製圖形

這裡以繪製直線和矩形為例,行126-行128用於判斷繪圖軌跡是否為空,如果不為空則清除它們。

最後,我們在類初始化程式碼中繫結這兩個事件即可。程式碼如下。

self.canvas.bind('<ButtonRelease-1>', self.endHandler)self.canvas.bind('<B1-Motion>', self.curHandler)

總 結

我們再來回顧下這個過程,這次我們繪製矩形看下。

Python使用tkinter製作一個簡易的繪圖程式四(Python GUI程式設計)

畫矩形時顯示矩形繪製軌跡

Python使用tkinter製作一個簡易的繪圖程式四(Python GUI程式設計)

釋放滑鼠後畫出矩形

這是個酷酷的操作,感興趣的朋友們可以自己敲程式碼試試,本文只是對主要程式碼進行了演示,想要原始碼的下方留言索取。雖然實現了這些功能,但是我們繪製的圖形如果能拖動,就更酷了,感興趣的朋友們持續關注哦!

轉載請註明出處(百家號:Python高手養成)