如何在不同的行中使用ttk Notebook的选项卡?

时间:2015-05-30 09:38:19

标签: python tabs tkinter ttk

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

与附加图片一样,我在一行中有很多标签,但我希望从下面一行的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]

1 个答案:

答案 0 :(得分:0)

ttk无法做到这一点,无论如何它都是一个可怕的设计。相反,创建一个“选项对话框”,在其中放置一个列表或树视图在侧面的面板中,并使用它来选择您的许多子页面。然后,您可以使用没有标签的笔记本,或只是切换包含您的子页面的不同框架,以响应选择窗格上的点击。

在Google图片中搜索“选项对话框”,以查看此计划的任意数量的实施。从可用性的角度来看,多行选项卡是一个非常糟糕的设计。

我提供此Hall of Shame的链接,以阻止任何人在选项卡式对话框中考虑多行。