星期三, 2月 23, 2005

 

[筆記] Tkinter

目錄

簡介

Tkinter(Tk Interface) 是 Python 標準模組之一,用以操作 Tk GUI 工具箱。Tk 是一套跨平台的 GUI 工具箱,在 Unix/Linux, Windows 和 Mac OS 上都可以使用。Tk 目前由 ActiveState 維護。

大部份情況下, Tkinter 模組已經足夠使用,除此之外還有一些模組。Tk 的低階介面位於 _tkinter 中,一般 programmer 不應直接用。Tk 低階介面以動態函式庫存在,有些以靜態結方式與 Python 直譯連結。

Tkinter 模組包含兩個重要模組 - Tkinter 本身,及 Tkconstants。後者會自動被前者 import,所以使用上只需 import Tkinter 即可:

import Tkinter

或是

from Tkinter import *

一個簡單的 Tkinter 程式

from Tkinter import * #1
root = Tk() #2
frame = Frame(root) #3
frame.pack()
#4
l = Label(frame, text = "Hello") #5
l.pack() #6
frame.master.title("Test...") #7
root.mainloop() #8

執行結果:


解說:
  1. import Tkinter 中所有的物件。
  2. 產生 Tkinter 應用程式的基礎 - root 元件。
  3. 產生放置元件 的 容器 - frame。
  4. 將 frame 加入容器中,在此處為 root 元件。
  5. 產生一個 Label 物件。在建構子中指定其 parent 物件,及內含的文字。
  6. 將 Label 物件加入容器中,在此處為 frame 物件。
  7. 設定 frame 的 parent 物件(即 root)的 title。此處亦可為
    root.title("Test...")
    因為 frame.master 即為 root。
  8. 進入 root 的主迴圈,等待訊息送達後處理。

Tkinter 模組

Tkinter 中的類別可以大致分為 2 類 :
Geometry Manager 是 mixin 的一種,可分為三類:

存取元件屬性

在 建構子中指定元件屬性:


以 Grid Manager 排列元件

Grid Manager 是排列視窗元件的一種管理員。Grid Manager 將整個視窗的內部當成一個表格:
當一個新的元件產生時,並不會馬上出現在視窗上,必須要先向 Geometry Manager 註冊,才能夠顯示。以 Grid Manager 來說,必須呼叫元件的 grid() 方法:

w = WidgetConstructor(master, ...)
w.grid(...)

grid() 方法接受數種 option:

column: 第 1 個 column 索引值為 0,往下遞增。
O
O
O
O

row: 第 1 個 row 索引值為 0 , 往右遞增。
OOOO
其它 Grid Manager 的方法:
將元件外觀標準化

透 過 Tkinter 元件所提供的界面,可以輕易地指定一個元件的外觀;但若是需要指定數個元件擁有相同外觀,透過上述的界面,就不是那麼方便了。Tkinter 提供了另一套機制, option database,來簡化這項工作。將元件的外觀屬性記錄在一個外部的檔案中,例如 X 系統的 .Xdefaults,再以元件的 option_readfile() 方法將內容讀入並設定,就可以做到元件外觀的標準化,亦可以讓使用者自訂外觀。

Option database 根據元件的名稱來設定元件的外觀屬性。元件名稱可以分為兩種:
元件的 class name 和 instance name 會依所在的階級有有所不同。例如,一個 Frame 中放置了一個 Text 元件,而 Text 元件中又放置了一個 Button 元件,則此 Button 元件的 class name 為 Frame.Text.Button,而其 instance name 則可能為 mainFrame.messageText.paincBUtton,端看各元件的 instance name 的命名。
所以 option database 機制透過 instance name,能夠套用到單一元件 instance 上,而透過 class name,則可以套用到一個元件 class 所有的 instance 上。

參考文件

Tkinter 文件:

An Introduction to Tkinter


Python 文件:

www.pythonware.com
Comments: 張貼留言

<< Home

This page is powered by Blogger. Isn't yours?