Hallo Leute,
ich überlege gerade, wie man seine eigene Anwendung neustarten kann. Zur Zeit löse ich das über eine Batch-Datei. Aber dazu später. Erst einmal meine Ordnerstruktur - siehe Bild.
Im Ordner proiject_xarphus liegt dann das Modul xarphus.py. Ich behandel dieses Modul als eine Art Index.
Code: Alles auswählen
# -*- coding: utf-8 -*-
from files.modStart import start_main
def main():
start_main()
if __name__ == "__main__":
main()
Damit greife ich dann auf die Funktion
files\start_main.py im Modul modStart zu. Alles ganz unspektakulär. Von dort aus werden nach unten hin nach und nach Module importiert. Klappt ja auch alles. Ganz weit rechts im Bild seht ihr, dass die Datei ui_pp_mdi.py markiert ist. In diesem Modul wird die UI-Datei geladen und die ganzen Aktionen, Trigger etc festgelegt. Alles super soweit. unter anderem ist dort eine Aktion "Neustart". Meine erste Idee war, rückwärts das Index-Modul xarphus.py zu importieren, aber soweit reicht der Import nicht.
Das wäre der vollständige Pfad zum
ui_pp_mdi-Modul
\project_xarphus\files\modules_ui\ui_pp_mdi.py
Also habe ich erst einmal im ui_pp_mdi.py-Modul folgende Funktion hinterlegt:
Code: Alles auswählen
def run_batch(self):
from subprocess import Popen
app.quit()
self.batch_it = os.path.join(os.path.abspath(".") + os.sep + "xarphus.bat")
Popen(self.batch_it)
Ich rufe bei einem bestimmten Trigger die Funktion
run_batch, schließe die Anwendung, und die Batch-Datei startet meine Anwendung wieder. Funktioniert auch alles. Das Problem ist aber, man will ja plattformunabhängig agieren, sonst hätte man ja auch auf Python verzichten können, sobald man nur in eine OS-Richtung geht. Nun weiß ich nicht, wie ich ein Neustart bewerkstelligen könnte, und das innerhalb meiner Ordnerstruktur. Wie gesagt, xarphus.py ist sozusagen das Ausgangsmodul. Nur leider kann ich nicht rückwärts das Modul xarphus.py (ausgehend von ui_pp_mdi.py) importieren, da der Weg zu lang ist. Wäre mir das möglich, hätte ich ja getrost auf die
main()-Funktion in xarphus.py zugreifen können.