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