0%

Python Tkinter 之你該仔細想想是否要用Tk

前言

目前接下的 SideProject 也告一個段落了,用了兩個月的時間寫出一個小系統,這其中最困難的地方莫過於幾乎全部是我通靈出來的

如果有下次,我希望能夠和我好好討論一些細節,不用讓我那麼痛苦。

好了廢話說到這

接下來是正題,我們繼續看下去

tk的優勢

我們先來說說tk的優勢好了,不然等等應該是說不到了

假設你是個新手,剛接觸Python,想做點東西來證明自己
想要做一個簡單的功能並且帶有介面
或是你超級愛tk的
那恭喜tk非常適合你們使用

其他人就建議考慮看看別的吧(pyqt之類的)

tk入門其實非常簡單,基本上效果簡單功能簡單
而且還內建在Python裡面

好了,接下來就是滿滿的問題了

本人的狀況

其實會寫這篇也是因為有個比較特殊的狀況,之前的文章有提過,我的桌機是使用Windows系統,但筆電是使用MacOS

這邊就衍伸出一個問題,Python 的 tk 在兩個系統上同樣一段 Code 表現就會差非常多

這就導致,在Windows上寫的,沒辦法完全照搬到MacOS上

這對我來說其實非常痛苦

舉個例子
MacOS上,tk其實不太需要額外多做美化就還不錯了,滿簡約的

但在Windows上,就是那個醜醜的灰色windows98風格介面

更多的差異

那這也就算了,大不了我事先做個系統判斷吧,先判斷的我的系統是什麼,我再來決定我要走哪個方法

但事情當然沒那麼簡單

隨著專案越寫越大,越寫越多,需要考量的情況越來越多,可能需要先鎖住主視窗不給使用者用

恭喜,MacOS的tk不能使用-disabled 這個參數,因為根本沒有遇到就報錯

你說一樣啊我繼續多加幾個條件判斷就好了

是也沒錯,總共多判斷個幾十幾百次就好

最後一個比較令人崩潰的是MessageBox的介面完全不一樣

在MacOS上,MessageBox長這樣(以Showerror為例)

有沒有發現Title跟圖示都怪怪的??

對我而言這其實已經到不能接受了,Showerror是為了顯示錯誤訊息,Title不見就算了,連警告標誌都沒有是哪招??

排版

我覺得tk最不友善的地方就是這裡 - 排版

tk的排版大致上可分為三種

pack
grid
place

這三種各有優缺點

pack最簡單,但元件一多擺起來最醜也最難排
grid應該是三者中評價最好的,最推薦學這個,但如果你要擺到你想要的位置,你要多放很多沒有用的元件來達成這件事,這也是我覺得最反邏輯的地方
place可以放到任何你想要的地方,且可以搭配上述兩者其中一種使用,但只要你的視窗大小改變,你的元件沒有特別運算的話,一定位置跑掉

而且為了要做好看的排版,你就必須反覆測試這樣好不好看
這都還沒算上你需要幫元件美化跟設計長寬高來符合排版
寫起來完全沒有比較簡單,反而還非常複雜且麻煩

其他

tk本身功能其實也算是偏陽春的
包含很多實用的元件都必須從ttk導入
甚至是額外安裝,像是 Calendar(選擇日期)

如果你要做出可搜尋的複選下拉式選單你甚至要自己從其他元件生出來

小結

這篇文章主要都是個人的看法
我也看過用tk就寫得嚇嚇叫的人
但每個開發者都有自己偏好的套件甚至語言
不用去說服別人說這個優點很好啊怎樣怎樣
你習慣別人不見得習慣
你覺得是優點的東西或許別人不以為意
你覺得tk好用那就好用,恭喜你找到自己適合的工具


如果有錯誤的部份,歡迎指正,謝謝。
如果你喜歡這篇文章,請幫我拍手
只需要註冊會員就可以囉,完全不用花費任何一毛錢就可以用來鼓裡創作者囉