1. 如何使得一個(gè) Text 只讀,因?yàn)樵O(shè)置 state="disabled" 之后,代碼中也無法插入和修改文本。 解決方案: 綁定鍵盤輸入,取消所有的輸入。 實(shí)現(xiàn)方式: w = Tkinter.Text(master) w.bind("<KeyPress>", lambda e : "break") # 事件處理腳本返回 "break" 會中斷后面的綁定,所以鍵盤輸入不會被插入到文本框。 2. 如何刪除 Tix.OptionMenu 中的子項(xiàng)目。 總是找不到如何得到 OptionMenu 的所有孩子的方法,Tix 官方文檔提供的屬性是 entries,但是實(shí)際上調(diào)用的時(shí)候卻找不到(Tix8.4.3 for Win 32),下面是一種折衷的方法,需要命令的名稱和標(biāo)簽有關(guān)聯(lián)關(guān)系: # 創(chuàng)建和使用 w = Tix.OptionMenu(master) w.add_command("x", label="x") w.add_command("y", label="y") ... # 刪除子項(xiàng) w["disablecallback"] = True w["disablecallback"] = False 可以嘗試直接調(diào)用 tk 的方法實(shí)現(xiàn)(下面的代碼沒有調(diào)試,只是說明思路): names = w.tk.call(w, "entries") for name in names.split(): w.delete(name) 3. 為一個(gè)文本創(chuàng)建多個(gè)視圖 首先創(chuàng)建一個(gè)原始 Text w = Tkinter.Text(master) 然后創(chuàng)建一個(gè) peer,因?yàn)門kinter不支持 peer,所以需要直接調(diào)用 tk.call,并且把新創(chuàng)建的 peer 單獨(dú)放到一個(gè) frame 里面。 frame = Tkinter.Frame(master) name = frame.winfo_parent() + "." frame._winfo_name() + ".1" w.tk.call(w, "peer", "create", name) w.tk.call("grid", name, "-sticky", ”nesw") 然后就可以使用 frame 作為一個(gè) Tkinter 中的控件來使用了,其中就包含著 Text 的另外一個(gè) peer 視圖,在兩個(gè)視圖里面都可以修改文本,但是其插入的光標(biāo)位置可以不一樣。 |
|