如何在tkinter中获取Notebook小部件的框架名称

3
如果我们有标签,则可以通过以下方式获取其文本:
l = tk.Label(text="hello, world")
...
print("the label is", l.cget("text"))

但是我无法通过同样的方式找到添加在Notebook中的框架名称,是否有其他可用的方法?

ttk.Notebook 示例:

import tkinter
from tkinter import *
from tkinter.ttk import *
root = tkinter.Tk()
note = Notebook(root)

tab2 = Frame(note)
tab3 = Frame(note)

note.add(tab2, text = "Tab Two")
note.add(tab3, text = "Tab Three")
note.pack()
root.mainloop()
exit()

“框架名称”是什么意思?您是在问如何获取笔记本选项卡的文本吗? - Bryan Oakley
@BryanOakley 是的,根据Nae的答案,我可以在同一个文件中获取,但是如果我在Nae的答案中动态传递框架对象,那么它就无法正常工作,这里是Notebook.tab(item)['text'],其中item是要解析的动态框架对象。 - мalay мeнтa
1
请更新您的问题,展示准确反映问题的代码。 - Bryan Oakley
2个回答

4

创建小部件时,您可以为它们命名:

note = Notebook(root, name="George")
tab2 = Frame(note, name="Tabby")

可以使用nametowidget通过名称查找小部件:

tab2 = root.nametowidget("George.Tabby")

1

您可以通过以下方式获取 ttk.Notebooktabtext 选项:

note.tab(tab2)['text']

更一般地,您可以通过以下方式获取选项卡的option:
nb.tab(tab_name)[option]

1
如果我们在同一个文件中使用它,那么它可以正常工作,但是如果我动态地传递一个框架元素作为Notebook.tab(item)['text'],那么就会出现TypeError: tab() missing 1 required positional argument: 'tab_id',尽管我传递的是相同的东西。 - мalay мeнтa
请问您能否提供相关的参考链接以便进一步了解?谢谢。 - мalay мeнтa
1
@мalayмeнтa 我使用了http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Notebook.html。 - Nae
tabIds似乎默认为0索引元组。你可以使用 for id in range(len(nb.tabs())): nb.tab(id)['text'] 列出所有选项卡的文本选项,例如。或者单独使用 nb.tab(1)['text'] - Nae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接