資料內(nèi)容:
了解 Tkinter 如何封裝 Tcl/Tk
當(dāng)你的應(yīng)用程序使用 Tkinter 的類和方法時,Tkinter 內(nèi)部匯編代表 Tcl/Tk 命令的
字符串,并在連接到你的應(yīng)用程序的 Tk 實(shí)例的 Tcl 解釋器中執(zhí)行這些命令。
無論是試圖瀏覽參考文檔,或是試圖找到正確的方法或選項,調(diào)整一些現(xiàn)有的代碼,
亦或是調(diào)試 Tkinter 應(yīng)用程序,有時候理解底層 Tcl/Tk 命令是什么樣子的會很有用。
為了說明這一點(diǎn),下面是 Tcl/Tk 等價于上面 Tkinter 腳本的主要部分。
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
Tcl 的語法類似于許多 shell 語言,其中第一個單詞是要執(zhí)行的命令,后面是該命令
的參數(shù),用空格分隔。不談太多細(xì)節(jié),請注意以下幾點(diǎn):
• 用于創(chuàng)建窗口小部件(如 ttk::frame)的命令對應(yīng)于 Tkinter 中的 widget
類。
• Tcl 窗口控件選項(如 -tex)對應(yīng)于 Tkinter 中的關(guān)鍵字參數(shù)。
• 在 Tcl 中,小部件是通過 路徑名 引用的(例如 .frm.btn),而 Tkinter 不使
用名稱,而是使用對象引用。
• 控件在控件層次結(jié)構(gòu)中的位置在其(層次結(jié)構(gòu))路徑名中編碼,該路徑名使用一
個 . (點(diǎn))作為路徑分隔符。根窗口的路徑名是 . (點(diǎn))。在 Tkinter 中,層
次結(jié)構(gòu)不是通過路徑名定義的,而是通過在創(chuàng)建每個子控件時指定父控件來定義
的。
• 在 Tcl 中以獨(dú)立的 命令 實(shí)現(xiàn)的操作(比如 grid 和 destroy )在 Tkinter 控件
對象上以 方法 表示。稍后您將看到,在其他時候,Tcl 在控件對象調(diào)用的方
法,在 Tkinter 也有對應(yīng)的使用。