如何在不同行中设置 ttk Notebook 的选项卡?

How to have tabs of a ttk Notebook in different rows?

在下面的程序中,我在单个笔记本页面中有多个选项卡。当标签数量增加时,外观会发生变化。那么如何将标签放在不同的行中

如附图所示,我在一行中有很多选项卡,但我希望在下面一行中显示来自 JJJJ 的一些选项卡。

如何在不同的行中设置选项卡以及如何在选中时为选项卡提供不同的颜色(突出显示选项卡)?

title = 'Trial Tool window'

import sys
sys.path[:0] = ['../../..']

import Tkinter
import Pmw

class MyButton(Tkinter.Button):
    def __init__(self, master=None, cnf={}, **kw):
        self.__toggle = 0
        kw['background'] = 'green'
        kw['activebackground'] = 'red'
        apply(Tkinter.Button.__init__, (self, master, cnf), kw)


class Demo:
    def __init__(self, parent):
    # Create and pack the NoteBook.
        notebook = Pmw.NoteBook(parent)
        notebook.pack(fill = 'both', expand = 1, padx = 10, pady = 10)

        page = notebook.add('AAAA')
        notebook.tab('AAAA').focus_set()

        # Create the "Toolbar" contents of the page.
        group = Pmw.Group(page, tag_text = 'XYZ')
        group.pack(fill = 'both', expand = 1, padx = 10, pady = 10)
        b1 = Tkinter.Checkbutton(group.interior(), text = 'Show tool')
        b1.grid(row = 0, column = 0)

        # Add all other Channel pages.
        page = notebook.add('BBBB')
        page = notebook.add('CCCC')
        page = notebook.add('DDDD')
        page = notebook.add('EEEE')
        page = notebook.add('FFFF')
        page = notebook.add('GGGG')
        page = notebook.add('HHHH')
        page = notebook.add('IIII')
        page = notebook.add('JJJJ')
        page = notebook.add('KKKK')
        page = notebook.add('LLLL')
        page = notebook.add('MMMM')
        page = notebook.add('NNNN')
        page = notebook.add('OOOO')
        page = notebook.add('PPPP')
        page = notebook.add('QQQQ')
        page = notebook.add('RRRR')

        notebook.setnaturalsize()

######################################################################

# Create demo in root window for testing.
if __name__ == '__main__':
    root = Tkinter.Tk()
    Pmw.initialise(root)
    root.title(title)

    widget = Demo(root)

    exitButton = MyButton(root, text = 'Exit', command = root.destroy)
    exitButton.pack()
    root.mainloop()![enter image description here][2]

ttk 不可能做到这一点,而且这是一个糟糕的设计。相反,创建一个 "options dialog",在其中将列表或树视图放在侧面的面板中,并将其用于 select 在您的许多子页面中。然后,您可以使用没有选项卡的笔记本,或者简单地切换包含子页面的不同框架以响应对 selection 窗格的点击。

搜索 google 图像 "options dialog" 以查看此方案的任意数量的实现。从可用性的角度来看,多行选项卡是一个非常糟糕的设计。

我将此 link 提供给 Hall of Shame 以阻止任何人在选项卡式对话框中考虑多行。