天天看點

Tkinter小結 界面+快捷鍵設定

<a href="#%E5%89%8D%E8%A8%80">前言</a>

<a href="#%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9">基礎知識點</a>

<a href="#%E5%89%8D%E5%AF%BC%E7%AF%87">前導篇</a>

<a href="#button%E7%AF%87">Button篇</a>

<a href="#label%E7%AF%87">Label篇</a>

<a href="#entry%E7%AF%87">Entry篇</a>

<a href="#%E5%85%B6%E4%BB%96%E6%8E%A7%E4%BB%B6">其他控件</a>

<a href="#%E4%BA%8B%E4%BB%B6%E7%AF%87">事件篇</a>

<a href="#%E5%B0%8F%E5%BA%94%E7%94%A8">小應用</a>

<a href="#%E6%80%BB%E7%BB%93">總結</a>

之前寫過一個關于Python 使用easyUI建立桌面小應用的部落格,雖然easyUI很實用,但是安裝方面确實存在一些小小的問題。那麼好吧,這次就嘗試着使用自帶的Tkinter好了。

另外不得不說的是,Windows環境下寫界面還是用C++或者C#的好,天生自帶優勢,界面也更加美觀。

下面就一些基礎的空間簡要的描述一下,以及它們的簡單應用。

要想寫界面,就得有個載體不是。這就好比說我們要蓋個房子,光有磚頭,瓦塊,木材是肯定不行的。我們還需要一個架構,一個承載這些元件的”平台”。

在Tkinter中,同樣如此。而且建立這麼一個“架構”也很簡單,如下代碼。

運作一下,結果圖如下

Tkinter小結 界面+快捷鍵設定

按鈕對于一個桌面應用來說是最最常見,也必不可少的一塊“磚頭”了。但是在寫界面的時候,我們沒有見過單獨一個按鈕就可以跑起來的吧。就好比磚頭需要蓋在房子裡。是以button需要依附于一個架構,也就是剛才的platform。

源碼中是這樣解釋的。

也就是說button需要有一個parent控件。那麼下面我們來看下代碼。

如下

Tkinter小結 界面+快捷鍵設定

需要注意的是<code>Button(platform, text='我是一個按鈕').pack()</code>這行代碼的pack方法,其作用是将按鈕“夯”進platform,讓它能顯示出來。不然的話,磚頭始終是磚頭,成不了房子的一部分。如果沒有這個方法的話,元件是不會顯示的。pack方法可以傳入slide參數來指定其靠齊方式。如side=LEFT啥的。

button元件除了

- text(按鈕上顯示的文本)

- width(寬度)

- height(按鈕的高度)

- compound(依附方位)

等之外。還有一個比較重要的屬性,那就是command。這就是響應按鈕被點選的時候的回調函數。說白了就是 點選按鈕之後會觸發什麼響應事件。下面我們來看個小小的例子。

Tkinter小結 界面+快捷鍵設定

這樣就可以啦。也許你會想,為啥callback沒有參數啊,我想在點選按鈕的時候傳一個參數來改變一些行為怎麼辦呢?

關于這塊,我也檢視了一下官方文檔,發現确實沒有相關的api可以被直接的調用。但是有下面這種間接的方式實作。

結果如下

Tkinter小結 界面+快捷鍵設定

标簽,同樣是很簡單的一個控件。使用方法和button控件一緻。

Tkinter小結 界面+快捷鍵設定

更多屬性設定可以參考官方文檔,或者直接點進去源碼檢視。

沒有輸入控件的界面是不完整的界面,下面淺談一下entry控件的基本使用。

結果如下:

Tkinter小結 界面+快捷鍵設定

關于這個輸入控件常用的方法有這麼幾個:

get() 擷取目前這個空間的字元内容。

select_clear() 清空目前被選擇的輸入控件的内容,如果目前輸入控件沒有獲得滑鼠焦點,則不會有什麼影響。

… …

其他的控件的使用方式都是類似的,學會了前幾個,相信對于後面的也不是什麼難事了。

有興趣的話可以參考官方的幫助文檔。

<a href="https://docs.python.org/2/library/tkinter.html">https://docs.python.org/2/library/tkinter.html</a>

下面介紹一下關于界面的事件處理篇。因為我在一開始使用的時候沒能成功,也是從各處搜尋才找到答案。是以介紹一下,也為了讓更多的人少走彎路。

我自己的了解是Tkinter把關于界面的所有的事件都封裝成了一個對象,我們可以友善的從這個對象中擷取到已經發生的事件,然後隻需要針對不同的事件作出相應的處理即可。

這裡簡單的介紹一下對于鍵盤事件的處理吧。

一般來說隻需要一個下面一個方法:

下面針對一個小例子進行講解。

運作的時候我們按下鍵盤上的方向鍵左鍵,就會列印對應的處理内容。右鍵類似。

關于bind_all方法,第一個參數對應的内容很多。我在這裡盡可能把常用的羅列一下,免得大家再去單獨搜尋。

<code>bind_all('&lt;KeyPress-Up&gt;', eventhandler)</code> 鍵盤方向鍵上鍵

<code>bind_all('&lt;KeyPress-Down&gt;', eventhandler)</code> 鍵盤方向鍵下鍵

<code>bind_all('&lt;KeyPress-Left&gt;', eventhandler)</code> 鍵盤方向鍵左鍵

<code>bind_all('&lt;KeyPress-Right&gt;', eventhandler)</code> 鍵盤方向鍵右鍵

<code>bind_all('&lt;KeyPress&gt;', eventhandler)</code> 鍵盤鍵位通用處理

<code>bind_all('&lt;Enter&gt;', eventhandler)</code> 按下Enter鍵

<code>bind_all('a', eventhandler)</code> 鍵盤小寫字母a

<code>bind_all('A', eventhandler)</code> 鍵盤大寫字母A

<code>bind_all('&lt;Control-A&gt;', eventhandler)</code> Control+shift+a

<code>bind_all('&lt;Control-a&gt;', eventhandler)</code> Control+a

<code>bind_all('&lt;Control-Alt-b&gt;', eventhandler)</code> Control+Alt+b

相似的,Tkinter支援下面這些按鍵。但是需要知道的是不支援

學完了上面的這些控件及其需要注意的地方,寫一個簡單的桌面小應用就足夠了。

下面以一個小例子來收尾,功能是爬取糗事百科上的段子資訊。

使用方式: 界面運作按下鍵盤的方向鍵即可操作。↑←代表檢視上一個段子。↓→代表檢視下一個段子。

運作效果如下面的GIF圖。 糗事百科簡易粗糙桌面版本。

Tkinter小結 界面+快捷鍵設定

一般來說我們不會用Python來寫界面,但是為了以防萬一,了解一下還是不錯的。

這篇文章雖然算不上事無巨細,但是基本上看完之後就可以實戰自己的小桌面應用了。

那麼今天就先到這吧。