午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Python 中使用 Tkinter、Tix 的一些常見問題的解決

 dinghj 2014-03-28

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
try:
    n = w.menu.index("end")
    for i in range(n + 1):
        name = w.menu.entrycget(i, "label")
        w.delete(name)
except Exception, inst:
    print inst

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)位置可以不一樣。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多