Python 3 Tkinter 笔记本标签。如何返回所有选项卡的文本而不是数字 ID?

0 python tkinter python-3.x

大家好,我一直在学习 Tkinter 并制作一些 GUI 应用程序。我正在试验笔记本小部件,但被困在一个地方。我想知道是否有一种方法可以对所有当前选项卡使用 for 循环并返回所有选项卡的文本名称而不是数字 ID。我想用它来跟踪帧。我四处搜索并找到了如何显示当前选项卡的选项卡文本,但我需要所有选项卡。我一直无法找到任何专门用于此的东西。如果您有想法,请告诉我。谢谢。

[编辑] 代码片段

from tkinter import *
from tkinter import messagebox
from tkinter.scrolledtext import ScrolledText
from tkinter import ttk


class Window(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()
        self.second_window()
        self.pm_tabs = []

    def init_window(self):# Builds the UI for the main window

        self.n = ttk.Notebook(root)

        self.get_tabs_button = Button(self.textboxframe,
                                      width=20,
                                      text='Get Tab Names',
                                      command=lambda:self.get_tab_names())
        self.get_tabs_button.grid(row = 0,
                                  column= 1,
                                  padx=(5,5),
                                  pady=(5,150),
                                  sticky=N+S+E+W)

        self.n.add(self.textboxframe, text='Chat')
        self.n.grid(row=0, column=0, sticky=N+S+E+W)

    def second_window(self):# UI for second window

        self.get_tabs_button = Button(self.textboxframe,
                                      width=20,
                                      text='Get Tab Names',
                                      command=lambda:self.get_tab_names())
        self.get_tabs_button.grid(row = 0,
                                  column= 1,
                                  padx=(5,5),
                                  pady=(5,150),
                                  sticky=N+S+E+W)
        self.n.add(self.textboxframe, text='Second')

    def get_tab_names(self): # get the names of the tabs. Hoping to get the text names of the tab.
        for tabs in self.n.tabs():
            print(tabs)

if __name__ == '__main__':
    root = Tk()
    app = Window(root)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

Bry*_*ley 6

根据官方文档,notebook的tab方法可以返回一个tab的信息,比如tab上的文字。

因此,您可以获得所有选项卡的文本列表,如下所示:

notebook = ttk.Notebook(...)
...
tab_names = [notebook.tab(i, option="text") for i in notebook.tabs()]
Run Code Online (Sandbox Code Playgroud)

如果您不熟悉列表推导式,上面的内容与此相同:

tab_names = []
for i in notebook.tabs():
    tab_names.append(notebook.tab(i, "text"))
Run Code Online (Sandbox Code Playgroud)