如何在Tkinter/Tix Python GUI中启用和禁用选项卡

2024-05-18 08:45:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中创建一个选项卡式GUI,我希望能够切换选项卡的启用/禁用状态(即,防止用户切换选项卡,并将非活动选项卡重显出来,以使这一事实变得明显)。到目前为止,我还不知道如何进行这种状态切换。

我决定使用Tkinter和/或Tix,因为它们内置在Windows上的Python发行版中(指导我的用户安装额外的第三方依赖项将比它的价值更麻烦)。我和Tkinter合作过一段时间,但直到现在tabs似乎才需要它。所以我根据http://svn.python.org/projects/python/trunk/Demo/tix/samples/NoteBook.py上的演示构建了一个两个标签的Tix.NoteBook

对于禁用一个tab,Tix tab实例的唯一相关属性(例如演示代码中的nb.hard_disk)似乎是configure(),但是天真地执行类似于nb.hard_disk.configure(state=Tix.DISABLED)的Tkinter操作会导致TclError: unknown option "-state"

搜索“disable Tix notebook tab”不会产生任何结果,甚至更一般的“disable Tix widget”也不会产生任何我可以理解/使用的结果。感谢任何指向正确方向的指针。


Tags: 用户tkinterconfigure状态guitab选项卡事实
2条回答

一般来说,在Tkinter中禁用小部件的方法是将“state”选项设置为Tk.DISABLED或更简单,只需将其设置为一个表示"disabled"的字符串。以下内容将变灰并禁用选项卡:

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

0是要禁用的选项卡的索引,notebook是您的notebook对象。这能回答你的问题吗?

下面是一个简单的笔记本示例:

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()

这可能是你想要的:

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

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

相关问题 更多 >