2014-01-07 47 views
2

我試圖讓Python中的選項卡式界面,我希望能夠切換選項卡的啓用/禁用狀態(即阻止用戶切換標籤和幽靈非活動選項卡出來使這個事實很明顯)。到目前爲止,我一直無法弄清楚如何做這個狀態切換。中如何啓用和禁用選項卡的的Tkinter/Python的蒂克斯GUI

我決定和Tkinter和/或Tix一起使用,因爲它們是在Windows上構建到Python發行版中的(指導我的用戶通過安裝額外的第三方依賴項會比它的價值更麻煩)。我已經與Tkinter合作了一段時間,但直到現在從來沒有Tix-標籤似乎需要它。所以,我在http://svn.python.org/projects/python/trunk/Demo/tix/samples/NoteBook.py

內置雙標籤Tix.NoteBook基於演示禁用選項卡,該選項卡蒂克斯實例的唯一相關的屬性(例如,在演示代碼nb.hard_disk)似乎是configure()但天真做一些Tkinter的狀,即nb.hard_disk.configure(state=Tix.DISABLED),導致TclError: unknown option "-state"

搜索「禁用蒂克斯筆記本標籤」什麼都不產生,甚至更普遍的「禁用蒂克斯部件」收益率沒有什麼我能理解/使用。感謝任何指向正確方向的指針。

回答

6

一般來說,如何在Tkinter中禁用小部件是通過將「狀態」選項設置爲Tk.DISABLED或更簡單,只需將其設置爲字符串"disabled"即可。下面變灰並禁用您的標籤:

notebook.tab(0, state="disabled")

0是要禁用的選項卡的索引,和筆記本是筆記本對象。這是否回答你的問題?

下面是一個簡單的筆記本例子來說明:

import Tkinter 
import ttk 

window = Tkinter.Tk() 
notebook = ttk.Notebook(window) 
notebook.pack() 
subframe = Tkinter.Frame(window) 
subframe.pack() 
notebook.add(subframe, text="tab", state="normal") 
def buttonaction(): 
    notebook.tab(0, state="disabled") 
button = Tkinter.Button(subframe, command=buttonaction, text="click to disable tab") 
button.pack() 

if __name__ == "__main__": 
    window.mainloop() 
+0

嗯,謝謝......這sooort-的因爲它讓我走上了Ttk而不是Tix的軌道。接下來,似乎Tix已經非常過時了,而我從未聽說過的ttk是要走的路。但不幸的是,由於各種令人討厭的原因,在我最終擺脫不必支持Python 2.5之前,我將不得不做很多工作,並且開箱即用,Windows 2.5的Python 2.5帶有Tix而不是ttk。所以我真的在尋找一個Tix解決方案。 – jez

+0

我想我的印象是你想要一個Tkinter解決方案或一個Tix解決方案(在我的回答中,我把它拼寫爲Wx)。也許ttk不是真的和Tkinter一樣,但據我所知它是Tkinter的一個插件/擴展,您需要使用Notebook小部件。很不幸,我沒有提供任何Tix建議,但希望像你說的那樣,也許我的例子會讓你跟蹤正確的Tix解決方案。 –

+0

對於'ttk' ;-) +1。 – Fenikso

0

這可能是你在找什麼:

nb.pageconfigure('hard_disk', state=Tix.DISABLED) 

http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixNoteBook.htm#M27

+0

這贏得了賞金,因爲它讓我走上了我可以在當前系統中使用的解決方案的軌道,儘管我承認從頭開始用ttk(Karim的方法)會更加整潔。沒有'.pageconfigure'方法,但經過一番搜索,登陸https://mail.python.org/pipermail/tkinter-discuss/2009-April/001916.html,我發現了工作解決方案'nb。 tk.call(nb._w,'pageconfigure','hard_disk','-state','disabled')' – jez

相關問題