Seite 1 von 1
importiertes Modul schließen?
Verfasst: Freitag 8. Oktober 2010, 08:49
von shadow07
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
Re: importiertes Modul schließen?
Verfasst: Freitag 8. Oktober 2010, 09:19
von 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.
Re: importiertes Modul schließen?
Verfasst: Freitag 8. Oktober 2010, 09:33
von shadow07
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)
Re: importiertes Modul schließen?
Verfasst: Freitag 8. Oktober 2010, 10:30
von /me
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?
Re: importiertes Modul schließen?
Verfasst: Freitag 8. Oktober 2010, 16:12
von shadow07
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.
Re: importiertes Modul schließen?
Verfasst: Freitag 8. Oktober 2010, 17:03
von /me
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?
Re: importiertes Modul schließen?
Verfasst: Freitag 8. Oktober 2010, 18:44
von shadow07
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