O Tkinter cria dinamicamente widgets a partir do botão

Estou tentando criar uma GUI dinâmica em que clicar em um botão causa a criação de um novo quadro que é colocado acima do botão com 3 widgets de entrada (opções do usuário) dentro dele, e preciso ler a entrada do usuário em os 3 widgets de entrada e possivelmente alterá-los. Cada vez que o botão é pressionado, três novos widgets de entrada solicitáveis devem aparecer.

Sei que isso está errado porque está me dando erros, mas algo semelhante às listas pode ser usado para criar os widgets dinamicamente?

from Tkinter import *

app = Tk()

frameNames = []
widgetNames = []

def createwidgets():
    global widgetNames
    global frameNames
    frameNames += (str("g"+str(len(frameNames))))  #why does the letter & number get added as seperate elements?
    widgetNames += [(str("w"+str(len(widgetNames)-1))), 
                    (str("w"+str(len(widgetNames)))),    
                    (str("w"+str(len(widgetNames)+1)))]

    frameNames[len(frameNames) - 1] = Frame(app)
    frameNames[len(frameNames) - 1].pack()

    widgetNames[len(widgetNames) - 3] = Entry(frameNames[len(frameNames) - 1])
    widgetNames[len(widgetNames) - 3].pack()
    widgetNames[len(widgetNames) - 2] = Entry(frameNames[len(frameNames - )- 1])
    widgetNames[len(widgetNames) - 2].pack()
    widgetNames[len(widgetNames) - 1] = Entry(frameNames[len(frameNames) - 1])
    widgetNames[len(widgetNames) - 1].pack()

createWidgetButton = Button(app, text="createWidgets", command=createwidgets())
createWidgetButton.grid(sticky=S)

app.mainloop()

questionAnswers(2)

yourAnswerToTheQuestion