Python 查找Ttk笔记本当前选定的选项卡
我有一个Ttk笔记本小部件,包含8个框架,8个标签。每个框架包含一个文本小部件。我在笔记本小部件外有一个按钮,我想在按下该按钮时将文本插入当前选项卡文本小部件 这似乎需要计算出笔记本中当前选择了哪个小部件,但我似乎找不到如何做到这一点。如何找到当前选定的选项卡 或者,我如何实现我想要的 如果有帮助,以下是我笔记本的代码:Python 查找Ttk笔记本当前选定的选项卡,python,tkinter,ttk,Python,Tkinter,Ttk,我有一个Ttk笔记本小部件,包含8个框架,8个标签。每个框架包含一个文本小部件。我在笔记本小部件外有一个按钮,我想在按下该按钮时将文本插入当前选项卡文本小部件 这似乎需要计算出笔记本中当前选择了哪个小部件,但我似乎找不到如何做到这一点。如何找到当前选定的选项卡 或者,我如何实现我想要的 如果有帮助,以下是我笔记本的代码: self.nb = Notebook(master) self.nb.pack(fill='both', expand='yes', padx=10, pady=10) sel
self.nb = Notebook(master)
self.nb.pack(fill='both', expand='yes', padx=10, pady=10)
self.frames = []
self.texts = []
for i in xrange(8):
self.frames.append(Frame())
self.nb.add(self.frames[i])
self.texts.append(Text(self.frames[i]))
self.texts[i].pack(fill='both')
我一点也不是专家,但希望我能用一些“新鲜的眼睛”来帮助你。 我想这可能涉及到
def buttonclick():
somevariablename = focus_get()
#Print your text into the somevariable notebook could be
#something like(not sure about the syntax):
focusednotebook = somevariablename
focusednotebook.insert('1.0', 'your text here')
yourbutton = Button(parent, text = "button name", command = buttonclick)
yourbutton.pack()
希望它能起作用,或者让你走上正确的方向
请随意编辑,因为我在这里使用python是相当新的:-)您可以通过
select
方法检索所选选项卡。但是,该方法返回一个tab_id,它并没有像现在这样有用<代码>索引将其转换为所选选项卡的编号
>>> nb.select()
'.4299842480.4300630784'
>>> nb.index(nb.select())
2
请注意,您还可以使用tab
>>> nb.tab(nb.select(), "text")
'mytab2'
您可以查看笔记本参考文档:您可以使用
“current”
关键字获取当前选定的选项卡:
noteBook.index("current")
请访问此网站:
24.2.5.3. 选项卡标识符有两种简单的方法可以查看选择了哪个选项卡:
nb.select() # returns the Tab NAME (string) of the current selection
及
.select()
方法还可以通过nb.select(tabId)
选择当前处于活动状态的选项卡。如果没有arg,它将返回当前选择的tabId(以“name”形式)
.index(tabId)
将tabId转换为数字索引。它还可以使用字符串“end”,它将返回制表符的数量。因此,nb.index(tkinter.END)
就像笔记本小部件的len()
方法
没有选项卡时,.select()
返回空字符串,但.index('current')
引发异常。如果你想要索引,我会说
if nb.select():
idx = nb.index('current')
这是最好的办法
在您的特定情况下,您可能希望获取当前笔记本选项卡名称,然后通过nametowidget()
方法将该名称转换为实际的子文本小部件,以便进行操作。所以
tabName = notebook.select()
if tabName:
textWidget = notebook.nametowidget(tabName) # here, 'notebook' could be any widget
textWidget.insert(pos, text, tags)
nametWidget(name)
方法将Tkinter名称映射到实际的小部件。它是一种可由任何实际小部件调用的方法。在tk中获取标记选项卡。Notebook很容易。您所要做的就是使用Notebook对象并以当前选项卡的索引为目标。这可以按如下方式进行
# creating a notebook object
notebook = ttk.Notebook(root, height=height, width=width, padding=20)
# Adding tabs
notebook.add(bin_tab, text="Binary Conversion")
notebook.add(oct_tab, text="Octal Conversion")
notebook.add(hex_tab, text="Hexadecimal Conversion")
print(notebook.index("current")) # returns 0, 1, 2depending on how many tabs you have in my case i have 3 which means index from 0 to 2
啊,是的,这和我最后使用的非常相似。不完全是我想要的,但它做了我需要的。啊,正是我想要的!我在筛选文档时遇到了麻烦,所以我一定错过了这个。但是是的,这是完美的。
# creating a notebook object
notebook = ttk.Notebook(root, height=height, width=width, padding=20)
# Adding tabs
notebook.add(bin_tab, text="Binary Conversion")
notebook.add(oct_tab, text="Octal Conversion")
notebook.add(hex_tab, text="Hexadecimal Conversion")
print(notebook.index("current")) # returns 0, 1, 2depending on how many tabs you have in my case i have 3 which means index from 0 to 2