Python Forum

Full Version: Adding New TAB to NoteBook Widget by Clicking
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
from tkinter import *
from tkinter import ttk

class Notebook:
    def __init__(self):
        self.root = Tk()
        self.root.title('Note Book')
        self.build_Menu()
        self.build_NoteBook()
        self.build_page_1()
        self.root.mainloop()

    def build_Menu(self):
        # MENU WIDGET CONFIGURATION
        self.menu = Menu(self.root)
        self.root.configure(menu=self.menu)
        self.filemenu = [None] * 3
        for f in range(1,3):
            self.filemenu[f] = Menu(self.menu,tearoff=False)
        #FILE MENU
        self.menu.add_cascade(label='File', menu=self.filemenu[1])
        for i in ['New','Open','Save','Print','Exit']:
            if i == 'New':
                self.filemenu[1].add_command(label=i,command=self.Add_New_Tab)
            elif i == 'Print':
                self.filemenu[1].add_command(label=i)
                self.filemenu[1].add_separator('')
            elif i == 'Exit':
                self.filemenu[1].add_command(label=i,command=quit)
            else:
                self.filemenu[1].add_command(label=i)
        #EDIT MENU
        self.menu.add_cascade(label='Edit',menu=self.filemenu[2])
        for i,k,l in [('Copy','Ctrl+C',''),('Cut','Ctrl+X','s'),('Paste','Ctrl+P',''),('Select All','Ctrl+A','s'),('Delete','Delete','')]:
            if i == 'Delete':
                self.filemenu[2].add_command(label=(f'{i} {k:>20}'),command=lambda:self.canvas.delete(ALL))
            elif l == 's':
                self.filemenu[2].add_command(label=(f'{i} {k:>20}'))
                self.filemenu[2].add_separator('')
            else:
                self.filemenu[2].add_command(label=(f'{i} {k:>20}'))
    # ADD NEW TAG CODE
    def Add_New_Tab(self):
            for k in range(2,3):
                self.notebook.add(self.tab[k],text=f'Page {k}')

    def build_NoteBook(self):
        # NOTEBOOK WIDGET CONFIGURATION
        self.notebook = ttk.Notebook(self.root,height=400,width=800)
        self.tab = [None] * 10
        global t
        for t in range(1,10):
            self.tab[t] = ttk.Frame(self.notebook)

        self.notebook.add(self.tab[1],text='Page 1',underline=0)
        # self.notebook.add(self.tab[2], text='Page 2')
        # self.notebook.add(self.tab[3], text='Page 3')
        # self.notebook.add(self.tab[4], text='Page 4')
        self.notebook.pack(fill=BOTH, expand=YES, padx=5, pady=5)

        #PAGE ONE CONTENTS
    def build_page_1(self):
        self.canvas = Canvas(self.tab[1],width=100,height=50,bg='#ffffff',cursor='heart')
        self.canvas.pack(fill=BOTH,expand=True,padx=5,pady=5)
        self.canvas.bind('<B1-Motion>',self.bind_paint)
        ttk.Button(self.tab[1], text='clean', command=lambda: self.canvas.delete(ALL)).pack(side=LEFT,anchor=CENTER,padx=90,pady=5,fill=X,expand=1)
        ttk.Button(self.tab[1], text='close', command=quit).pack(side=LEFT, padx=90, fill=X, anchor=CENTER,expand=1)

    #BINDING MOTION THAT SKETCHED THE CIRCLES RED COLORS
    def bind_paint(self,event):
        x1,y1 = (event.x - 5),(event.y - 5)
        x2,y2 = (event.x + 5),(event.y + 5)
        i = self.canvas.create_oval(x1,y1,x2,y2,fill='#ff0000',outline='#000000')
        return i

if __name__ == '__main__':
    Notebook()
Please how can I add one new tab/page (Frame) at a time into my NoteBook Widget each time I clicked on 'New' in my File Menu Widget?
Thanks.