tkinter是python中可用于建構gui的衆多工具集之一。
以上代碼可以顯示一個空白的根視窗。可以将其看成是應用程式的最外層容器,建立其他插件(widget)的時候就需要用到它。如果關閉螢幕上的視窗,則相應的視窗對象就會被銷毀。所有的應用程式都隻有一個主視窗;此外,還可以通過toplevel這個小插件來建立額外的視窗。
tkinter小插件包括button, canvas, checkbutton, entry, frame, label, listbox, menu, message, menubutton, text, toplevel等。
在python中字元串、整數、浮點數以及布爾值都是不可變的,于是tkinter自帶了一些類型;他們可以就地更新,并可以在其值發生變化時通知相關的插件。
tkinter中的可變類型
不可變類型
可變類型
int
intvar
string
stringvar
bool
booleanvar
double
doublevar
顧名思義,視圖用于把資訊顯示給使用者;模型則隻是存儲資料;控制器則可以更新應用程式的模型,并進而出發相應的視圖發生變化。
如下例子實作點選按鈕之後标簽上的計數增加:
如果我們不僅希望能增加counter的值,還希望能降低它的值。則我們需要添加另一個按鈕和另一個控制器函數。代碼如下:
上述實作代碼看起來有點傻,<code>click_up</code>和<code>click_down</code>做的事情看起來幾乎是一樣的,應該将它們合成一個。這時,我們應該顯示的把counter傳遞給函數,而不是使用全局變量。
tkinter要求由按鈕(以及别的插件)出發的控制器函數不能含有參數,目的就是為了以同一種方式去調用它們。我們要做的事情就是:對這個帶有兩個參數的函數進行處理,使其變成一個不帶參數的函數。
一個好一點的做法是使用lambda函數,它使我們能夠建立一個沒有名字的單行函數。
這段代碼分别為兩個按鈕建立了一個不帶參數的lambda函數,這兩個lambda函數會将正确的值傳進click。
控制布局,就可以使用pack,也可以使用grid,但是不能兩者都用。
可以使用rowspan和columnspan設定插件所占據的行數,預設為1。
幾乎所有真實的gui都是以類和對象來建造的:他們講模型、視圖和控制器一起放到一個幹淨整潔的包(package)中。例如下面的計數器函數,其模型是counter類的一個名為<code>self.state</code>的成員變量,其控制器是<code>upclick</code>和<code>quitclick</code>方法。
參考資料:
《python程式設計實踐》
《practical programming an introduction to computer science using python》
轉載:http://blog.csdn.net/foreverling/article/details/44902547