Python Forum
[Tkinter] Adding New TAB to NoteBook Widget by Clicking
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tkinter] Adding New TAB to NoteBook Widget by Clicking
#1
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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tkinter] Clicking on the button crashes the TK window ODOshmockenberg 1 2,233 Mar-10-2022, 05:18 PM
Last Post: deanhystad
  Need tkinter help with clicking buttons pythonprogrammer 2 2,435 Jan-03-2020, 04:43 AM
Last Post: joe_momma
  [Tkinter] Adding space between Notebook tabs Columbo 4 4,500 Jul-10-2019, 10:46 PM
Last Post: Columbo
  The PMW Notebook Widget MattSA 6 4,990 Jun-03-2019, 07:24 PM
Last Post: Larz60+
  tkinter- adding a new window after clicking a button built on the gui ShashankDS 2 6,593 Apr-18-2019, 12:48 PM
Last Post: ShashankDS
  [Tkinter] Clicking a RadioButton in a for Loop & Getting the Appropriate Return Vicolas 1 5,156 Feb-02-2019, 01:53 AM
Last Post: woooee
  [Tkinter] Close Toplevel after clicking button jollydragon 3 10,630 Jul-12-2018, 06:22 AM
Last Post: jollydragon
  [Tkinter] tkinter freezes by clicking button Zatox11 33 25,628 Apr-10-2018, 09:03 AM
Last Post: Zatox11

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020