我正在尝试在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的事情,即{{1} },结果为nb.hard_disk.configure(state=Tix.DISABLED)
搜索“禁用Tix笔记本选项卡”不会产生任何效果,甚至更通用的“禁用Tix小部件”也不会产生任何我能理解/使用的内容。感谢任何指向正确方向的人。
答案 0 :(得分:7)
一般来说,如何在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()
答案 1 :(得分:0)
这可能就是你要找的东西:
nb.pageconfigure('hard_disk', state=Tix.DISABLED)
http://tix.sourceforge.net/dist/current/man/html/TixCmd/tixNoteBook.htm#M27