import idlelib.tabbedpages as tbp from tkinter import * class CustomTabs(tbp.TabbedPageSet): def __init__(self, parent, page_names=None, page_class=tbp.TabbedPageSet.PageLift, n_rows=1, max_tabs_per_row=5, expand_tabs=False, tabs=[]): super().__init__(parent, page_names=page_names, page_class=page_class, n_rows=n_rows, max_tabs_per_row=max_tabs_per_row, expand_tabs=expand_tabs) self._tab_set = tbp.TabSet(self, self.change_page, n_rows=n_rows, max_tabs_per_row=max_tabs_per_row, tabs=tabs, expand_tabs=expand_tabs) if __name__ == '__main__': root=Tk() tabPage=CustomTabs(root, page_names=['Foobar','Baz'], tabs=["aaa"], n_rows=0, expand_tabs=False, ) tabPage.pack(side=TOP, expand=TRUE, fill=BOTH) Label(tabPage.pages['Foobar'].frame, text='Foo', pady=20).pack() Label(tabPage.pages['Foobar'].frame, text='Bar', pady=20).pack() Label(tabPage.pages['Baz'].frame, text='Baz').pack() entryPgName=Entry(root) buttonAdd=Button(root, text='Add Page', command=lambda:tabPage.add_page(entryPgName.get())) buttonRemove=Button(root, text='Remove Page', command=lambda:tabPage.remove_page(entryPgName.get())) labelPgName=Label(root, text='name of page to add/remove:') buttonAdd.pack(padx=5, pady=5) buttonRemove.pack(padx=5, pady=5) labelPgName.pack(padx=5) entryPgName.pack(padx=5) root.mainloop()