importiertes Modul schließen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
shadow07
User
Beiträge: 43
Registriert: Sonntag 22. Februar 2009, 16:29

ich importiere eine py welche nur class anzeige(Screen) enthält.

In der aufrufenden py läuft ein Timer in einer Class ohne Screen, der Timer soll den Screen aufrufen und erneut starten (macht er auch), jedoch funktioniert im Screen self.close() nicht - wo ist mein Denkfehler?

Code: Alles auswählen

class termin_timer():
    def next(self):
       ............
        if self.session is not None:
            self.timer.startLongTimer(min_zeitdiff)
    def TerminBox(self):
        self.timer.stop()
        self.session.open(anzeige, InfoLine)
        self.next()

Code: Alles auswählen

class anzeige(Screen):
...............
    def __init__(self, session, text):
        Screen.__init__(self, session)
        ...................
def exit(self):
        self.close() #hier tut sich nichts, kann den Screen nicht schließen
edit: code-Tags geändert, sorry
Zuletzt geändert von shadow07 am Freitag 8. Oktober 2010, 16:23, insgesamt 1-mal geändert.
ich hab 'ne kastrierte Form von Python, meine Scripte müssen ohne Nachinstallationen auskommen..........
BlackJack

@shadow07: Wo rufst Du `exit()` denn auf? Und `self` ist der konventionelle Name für das erste Argument das bei Methoden automatisch übergeben wird. Bei Funktionen ist das eher ungewöhnlich und muss auch explizit selbst übergeben werden. Sicher das `exit()` nicht eine Methode von `anzeige` sein sollte!?

Womit wir bei Namenskonventionen wären: Klassennamen sollten in "MixedCase" und nicht klein geschrieben werden.
shadow07
User
Beiträge: 43
Registriert: Sonntag 22. Februar 2009, 16:29

Wo rufst Du `exit()` denn auf?
wird über Buttons (AktionMap) aufgerufen - mein Verdacht, das sie nicht reagiert, wurde entkräftet da ich testweise mit einem anderen Button eine MsgBox aufrufen konnte (die ging auch zu schließen)
ich hab 'ne kastrierte Form von Python, meine Scripte müssen ohne Nachinstallationen auskommen..........
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

shadow07 hat geschrieben:wird über Buttons (AktionMap) aufgerufen
Ich nehme an du verwendest irgendein GUI-Toolkit. Wenn das so sein sollte, dann sage uns doch bitte mit welchem und stelle solche Fragen dann nächstes Mal gleich im richtigen Forum. Zudem solltest du im Forum für Python-Code auch Python-Tags statt einfache Code-Tags verwenden.

Grundsätzlich würde ich aber auf die Frage von BlackJack noch einmal zurückkommen wollen: Warum steht da self.exit()? Warum heißt das self? Soll die Funktion exit() eventuell zu der Klasse gehören?
shadow07
User
Beiträge: 43
Registriert: Sonntag 22. Februar 2009, 16:29

Ich nehme an du verwendest irgendein GUI-Toolkit
nein
Warum steht da self.exit()
wo soll das stehen?

das Problem konnte ich inzwischen soweit eingrenzen:
- starte ich den Timer in next nicht erneut , dann funktioniert close
- rufe ich in next eine Messagebox auf, kann ich diese schließen und danach funktioniert close
- rufe ich zuerst next und dann session.open auf dann wird der Screen nicht geladen

wenn der code hilft (ca 300 Zeilen), wohin damit?

falls eine Problembeschreibung hilft: ich lese aus einer Datei Termine aus, suche den nächstliegenden und zeige bei Eintreten den Screen mit Infos an. Danach soll natürlich der nächste Termin angezeigt werden.
ich hab 'ne kastrierte Form von Python, meine Scripte müssen ohne Nachinstallationen auskommen..........
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

shadow07 hat geschrieben:
Ich nehme an du verwendest irgendein GUI-Toolkit
nein
Warum steht da self.exit()
wo soll das stehen?
Sorry, self.close() war natürlich gemeint. Aufgrund des Namens und der ungewöhnlichen Einrückung habe ich halt den Verdacht, dass die Funktion def exit(self) eigentlich in die darüber stehende Klasse gehören soll.

Woher kommen eigentlich die von dir erwähnten Buttons, wenn du kein GUI-Toolkit verwendest?
shadow07
User
Beiträge: 43
Registriert: Sonntag 22. Februar 2009, 16:29

dass die Funktion def exit(self) eigentlich in die darüber stehende Klasse gehören soll.
es ist ein importiertes Modul und besitzt im Moment nur die eine Klasse, die Einrückung war ein Paste-Fehler, sorry
Woher kommen eigentlich die von dir erwähnten Buttons, wenn du kein GUI-Toolkit verwendest?
aus der vorhandenen Gui, welche aber hier nicht abgedeckt ist, da Spezialadaption (ich versuche mir darin einen Terminkalender -ähm einen Terminmelder zu basteln)

inzwischen habe ich das Problem etwas entschärfen können, ich habe den Buttons direkt die Funktion zugewiesen. Es bleibt aber eine Zeitverzögerung von einigen Sekunden, bis eine Reaktion möglich ist - irgend etwas blockiert mich da länger als notwendig
ich hab 'ne kastrierte Form von Python, meine Scripte müssen ohne Nachinstallationen auskommen..........
Antworten