Python 查找Ttk笔记本当前选定的选项卡

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

我有一个Ttk笔记本小部件,包含8个框架,8个标签。每个框架包含一个文本小部件。我在笔记本小部件外有一个按钮,我想在按下该按钮时将文本插入当前选项卡文本小部件

这似乎需要计算出笔记本中当前选择了哪个小部件,但我似乎找不到如何做到这一点。如何找到当前选定的选项卡

或者,我如何实现我想要的

如果有帮助,以下是我笔记本的代码:

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