我正在尝试在Python中创建一个选项卡式GUI,我希望能够切换选项卡的启用/禁用状态(即阻止用户切换选项卡,并禁止鬼非活动选项卡以使这一事实显而易见).到目前为止,我一直无法弄清楚如何进行这种状态切换.
我决定使用Tkinter和/或Tix,因为它们内置于Windows上的Python发行版中(指导我的用户安装额外的第三方依赖项将比它的价值更麻烦).我曾经和Tkinter合作过一段时间但从未使用过Tix,因为标签似乎需要它.所以我在http://svn.python.org/projects/python/trunk/Demo/tix/samples/NoteBook.py上根据演示构建了一个双标签的Tix.NoteBook.
为了禁用选项卡,Tix选项卡实例的唯一相关属性(例如nb.hard_disk
在演示代码中)似乎是configure()
天真的做类似Tkinter的东西,即nb.hard_disk.configure(state=Tix.DISABLED)
导致TclError: unknown option "-state"
搜索"禁用Tix笔记本选项卡"不会产生任何效果,甚至更通用的"禁用Tix小部件"也不会产生任何我能理解/使用的内容.感谢正确方向的任何指针.
一般来说,如何在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()