Поиск выбранной вкладки TTK Notebook
У меня есть виджет ноутбука Ttk, содержащий 8 кадров-так, 8 вкладок. Каждый кадр содержит текстовый виджет. У меня есть кнопка вне виджета Notebook, и я хочу вставить текст в текущий виджет текста вкладок при нажатии этой кнопки.
Это, похоже, требует разработки, какой виджет в ноутбуке в настоящее время выбран, но я не могу найти, как это сделать. Как найти выбранную вкладку?
кроме того, как я могу реализовать то, что я хочешь?
Если это поможет, вот код для моего ноутбука:
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')
4 ответов
вы можете получить выбранную вкладку через select
метод. Однако этот метод возвращает tab_id, который не очень полезен, как есть. index
преобразовать его в номер выбранной вкладки.
>>> nb.select()
'.4299842480.4300630784'
>>> nb.index(nb.select())
2
обратите внимание, что вы также можете получить дополнительную информацию о выбранной вкладке, используя tab
>>> nb.tab(nb.select(), "text")
'mytab2'
вы можете посмотреть справочную документацию ноутбука:http://docs.python.org/3/library/tkinter.ttk.html#notebook
Вы можете получить выбранную вкладку с помощью "current"
ключевые слова:
noteBook.index("current")
проверьте этот веб-сайт: https://docs.python.org/2/library/ttk.html#tab-identifiers 24.2.5.3. Идентификаторы Вкладок
Я не эксперт вообще, но надеюсь, что смогу помочь с некоторыми "свежими глазами". Я думаю, это может быть что-то связанное
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()
надеюсь, что это сработает или приведет вас в правильном направлении.
пожалуйста, не стесняйтесь редактировать, поскольку я довольно новичок здесь amd с python: -)
есть два простых способа, чтобы увидеть, какая вкладка выбрана:
nb.select() # returns the Tab NAME (string) of the current selection
и
nb.index('current') # returns the Tab INDEX (number) of the current selection
на .select()
метод также может быть использован для выбора, какая вкладка в настоящее время активна, через nb.select(tabId)
. Без arg он возвращает табид (в форме" имя") текущего выделения.
на .index(tabId)
преобразует табид в числовой индекс. Он также может взять строку "end", которая вернет количество вкладок. Итак,nb.index(tkinter.END)
как len()
метод для a виджет для ноутбука.
когда нет вкладок,.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)
на nametowidget(name)
метод отображает a Название Tkinter в виджет. Это метод, вызываемый любым фактическим виджетом.