2

我正在尝试在 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 小部件”也不会产生任何我无法理解/使用的结果。感谢任何指向正确方向的指针。

4

2 回答 2

9

一般来说,在 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()
于 2014-01-10T12:44:32.530 回答
0

这可能是您正在寻找的:

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

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

于 2014-01-14T21:10:32.530 回答