tk.StringVar.get()

hi,

i am learning python
try to create a mvc-Pattern with Tkinter.
my problem is; i get a empty StringVar if i try to get the ttk.Entry
look at def adHum(self) and def delHum(self)

from tkinter import *
import tkinter as tk
import tkinter.messagebox
import tkinter.ttk as ttk

class View(ttk.Frame):
    def __init__(self,parent):
        super().__init__(parent)

        self.mainLab = ttk.Label(self,text='HumList')
        self.grid(row=1,column=1)

        self.butNewHum = ttk.Button(self,text='NewHum',command=self.insertHum)
        self.butDelHum = ttk.Button(self,text='DelHum',command=self.rootDelHum)

        self.butNewHum.grid(row=1,column=1)
        self.butDelHum.grid(row=2,column=2)
    

  
        self.namVar = tk.StringVar()
        self.altVar = tk.StringVar()
        self.delNam = tk.StringVar()
        
    def insertHum(self):
        self.root2 = Tk()

        namLab = ttk.Label(self.root2,text='Name')
        entNam = ttk.Entry(self.root2,textvariable=self.namVar)
        namLab.grid(row=1,column=1)
        entNam.grid(row=1,column=2)

        altLab = ttk.Label(self.root2,text='Alter')
        entNam = ttk.Entry(self.root2,textvariable=self.altVar)
        altLab.grid(row=2,column=1)
        entNam.grid(row=2,column=2)

        okBut = ttk.Button(self.root2,text='Einfügen',command=self.adHum)
        okBut.grid(row=3,column=1)

        abbBut = ttk.Button(self.root2,text='Abbruch',command=self.closeRoot2)
        abbBut.grid(row=3,column=2)

    def closeRoot2(self):
        #self.namVar.set('')
        #self.altVar.set('')
        self.root2.destroy()
        self.root2.quit()

    def adHum(self):
        
        if self.controller:
            self.controller.newHum(self.namVar.get(),self.altVar.get())  # get()#s are empty

    
    def rootDelHum(self):
        self.root3=Tk()
        nL = ttk.Label(self.root3,text='Name')
        nL.grid(row=1,column=1)
        ent = ttk.Entry(self.root3,textvariable=self.delNam)
        ent.grid(row=1,column=2)
        but = ttk.Button(self.root3,text='Löschen',command=self.delHum)
        but.grid(row=2,column=1)
        abb = ttk.Button(self.root3,text='Abbruch',command=self.closeRoot3)
        abb.grid(row=2,column=2)

    def delHum(self):
        print('löscht'+self.delNam.get()) #  dont' get an StringVar

        if self.controller:
            self.controller.delHum(self.delNam.get())
            self.closeRoot3()
        
    def closeRoot3(self):
        
        self.root3.destroy()
        self.root3.quit()
        
    def setController(self,controller):
        self.controller = controller
        
    def shAdHum(self,name):
        tkinter.messagebox.showinfo('EinfügenInfo',f'Person {name} wurde hinzugefügt') # messageBox
        self.closeRoot2()
        
    def shDelHum(self,name):
        
        tkinter.messagebox.showinfo('LöschenInfo',name) #

        
    def shHumList(self,humList):
        for i, hum in enumerate(humList):
            print(f'{i+1}. {hum}') # window 

    def emptyHL(self):
        print('Liste leer!!!-Kein Personenen eingetragen-') #
        tkinter.messagebox.showinfo('LeereListe','Kein Personenen eingetragen') #


        
    def shHum(self,name,humList):
        filterHum = [hum for hum in humList if hum['name']==name]
        if filterHum != []:
            for i, hum in enumerate(filterHum):
               print(f'{filterHum[i]}')
            
        else:
                self.noHum(name)
                
    def noHum(self,name):
        print(f'Person {name} nicht in der Liste vorhanden #FromSelf')
        tkinter.messagebox.showinfo('KeinePerson',f'Person {name} nicht in der Liste vorhanden')#
    ##weiter machen !!!!!!!!!!!!!!!!!!!!!!!!!!!

ok i have the answer…self.root2 must be a Toplevel(), can only have one Tk().

thanks.