KeyError mit npyscreen

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Sprhld
User
Beiträge: 2
Registriert: Sonntag 29. April 2018, 12:10

Sonntag 29. April 2018, 12:18

Hallo!

Vorweg, ich bin ziemlich neu in Python und OOP. Ich komme von PHP und habe die Grundzüge verstanden. Nun aber hänge ich bei meinem ersten eigenen Programm:

Ich habe folgendes:

pm.py

Code: Alles auswählen

#!/usr/bin/env python
# encoding: utf-8

import controller
import model
import view

if __name__ == "__main__":
    App = view.PM().run()
und aktuell nur die view.py

Code: Alles auswählen

#!/usr/bin/env python
# encoding: utf-8

import npyscreen

class Dashboard(npyscreen.Form):
    def afterEditing(self):
        self.parentApp.setNextForm(None)
        
    def create(self):
        # These lines create the form and populate it with widgets.
        # A fairly complex screen in only 8 or so lines of code - a line for each control.
        self.Name = self.add(npyscreen.TitleText, name="Name")
        self.File = self.add(npyscreen.TitleFilename, name = "Filename:")

        # This lets the user interact with the Form.
        F.edit()

class PM(npyscreen.NPSAppManaged):
    def onstart(self):
        # Startseite
        self.addForm('MAIN', Dasboard, name="Dashboard")

        # Indikatoren DB
#        self.addForm('INDI', Indicators, name="Indikatoren")
       
Das Traceback sieht wie folgt aus:

Code: Alles auswählen

python3 pm.py
Traceback (most recent call last):
  File "pm.py", line 12, in <module>
    App = view.PM().run()
  File "/usr/local/lib/python3.6/dist-packages/npyscreen/apNPSApplication.py", line 30, in run
    return npyssafewrapper.wrapper(self.__remove_argument_call_main)
  File "/usr/local/lib/python3.6/dist-packages/npyscreen/npyssafewrapper.py", line 41, in wrapper
    wrapper_no_fork(call_function)
  File "/usr/local/lib/python3.6/dist-packages/npyscreen/npyssafewrapper.py", line 97, in wrapper_no_fork
    return_code = call_function(_SCREEN)    
  File "/usr/local/lib/python3.6/dist-packages/npyscreen/apNPSApplication.py", line 25, in __remove_argument_call_main
    return self.main()
  File "/usr/local/lib/python3.6/dist-packages/npyscreen/apNPSApplicationManaged.py", line 150, in main
    self._LAST_NEXT_ACTIVE_FORM = self._Forms[self.NEXT_ACTIVE_FORM]
KeyError: 'MAIN'
Da stecke ich jetzt fest. Ich habe verschiedene Keys anstelle des "MAIN" versucht, habe allen möglichen Kram entfernt der mir als Sinnlos erschien. Eingrenzen konnte ich das Problem nicht weiter, die Fehlermeldung hat sich bei keiner Bemühung geändert. Was tun? Was meint er damit eigentlich im Details mit dem KeyError? Ne Vorstellung habe ich schon, als Neuling gelingt es mir die aber nicht zu beweisen ;-)

Mal sehen. Ich danke Euch schon mal und bis bald ;)
Sprhld
User
Beiträge: 2
Registriert: Sonntag 29. April 2018, 12:10

Freitag 4. Mai 2018, 16:08

So, ich beantworte das mal selbst

Diese Zeile muss wie folgt geändert werden:

Code: Alles auswählen

self.addForm('MAIN', MAIN, name="Dashboard")
;)
Antworten