Como você combina vários formulários TUI para escrever aplicativos mais complexos?

Eu gostaria de escrever um programa com umTbaseado em extUSerInterface (TUI) que consiste em várias formas.

O primeiro formulário contém uma "lista". Cada elemento da lista representa um botão.Se o botão respectivo for pressionado, outro formulário deve aparecer no qual é possível inserir os dados para a entrada da lista.Em seguida, o primeiro formulário é exibido novamente (com entradas da lista atualizadas).

Aqui está minha tentativa, que usa a bibliotecanpyscreen mas não retorna para a primeira forma. O código também não contém a lógica para alterar o item da lista.

    #! /usr/bin/env python3
    # coding:utf8

    import npyscreen

    # content
    headers = ["column 1", "column 2", "column 3", "column 4"]
    entries = [["a1", "a2", "a3", "a4"],
               ["b1", "b2", "b3", "b4"],
               ["c1", "c2", "c3", "c4"],
               ["d1", "d2", "d3", "d4"], 
               ["e1", "e2", "e3", "e4"]]


    # returns a string in which the segments are padded with spaces.
    def format_entry(entry):
        return "{:10} | {:10} | {:10} | {:10}".format(entry[0], entry[1] , entry[2], entry[3])


    class SecondForm(npyscreen.Form):
        def on_ok(self):
            self.parentApp.switchFormPrevious()

        # add the widgets of the second form
        def create(self):
            self.col1 = self.add(npyscreen.TitleText, name="column 1:")
            self.col2 = self.add(npyscreen.TitleText, name="column 2:")
            self.col3 = self.add(npyscreen.TitleText, name="column 3:")
            self.col4 = self.add(npyscreen.TitleText, name="column 4:")


    class MainForm(npyscreen.Form):    
        def on_ok(self):
            self.parentApp.switchForm(None)

        def changeToSecondForm(self):
            self.parentApp.change_form("SECOND")

        # add the widgets of the main form
        def create(self):
            self.add(npyscreen.FixedText, value=format_entry(headers), editable=False, name="header")

            for i, entry in enumerate(entries):
                self.add(npyscreen.ButtonPress, when_pressed_function=self.changeToSecondForm, name=format_entry(entry))


    class TestTUI(npyscreen.NPSAppManaged):
        def onStart(self):
            self.addForm("MAIN", MainForm)
            self.addForm("SECOND", SecondForm, name="Edit row")

        def onCleanExit(self):
            npyscreen.notify_wait("Goodbye!")

        def change_form(self, name):
            self.switchForm(name)


    if __name__ == "__main__":
        tui = TestTUI()
        tui.run()

questionAnswers(2)

yourAnswerToTheQuestion