Python-Skript über Ubuntu/Gnome Anwendungsstarter starten

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
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

Dienstag 24. Februar 2009, 17:55

Hi,

ich hab ein Python Skript, das als letzte Aktion über os.popen einen Videoplayer startet. In der Shell funktioniert das einwandfrei. Das Skript ist erst fertig wenn der Player wieder zu ist. So passt das alles.

Wenn ich das Skript aber in einen Anwendungsstarter (ich hab "Anwendung" und "Anwendung im Terminal" probiert) packe

Code: Alles auswählen

python skript.py
ist das Skript gleich wieder beendet und der player wird mit beendet. D.h es blinkt nur mal kurz ein Fenster auf, sonst nichts. Das Skript mit

Code: Alles auswählen

timer.sleep(30)
am Ende warten zu lassen bringt nichts, das ignoriert er. Wenn ich

Code: Alles auswählen

while True:
    pass
ans Ende setze wird das Video abgespielt, aber das kann doch nicht der Standardweg sein, oder?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 24. Februar 2009, 18:30

Ich nehme mal an, du verwendest das gnome-Terminal. Dort gibt es im Bearbeiten Menü die Möglichkeit festzulegen, wie das Terminal sich nach dem Beenden eines im Terminal gestarteten Programms verhält, also z.B. dann offen zu bleiben. Das sollte helfen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 24. Februar 2009, 18:39

Muss das Python-Skript über die dauer der Wiedergabe laufen oder kann es beendet werden, nachdem der Player gestartet wurde?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

Dienstag 24. Februar 2009, 20:12

Problem gelöst: Im Skriptteil vor dem os.popen() hatte ich einen Dateizugriff mit relativem Pfad. Das hat in der Shell funktioniert nicht aber beim Starter. Und der Starter hat das Fenster gleich geschlossen so, dass ich keine Fehlermeldung gesehen habe.

@numerix
Wo kann ich denn Einstellen ob der Terminal offen bleibt, der Starter selbst hat bei mir da keine Einstellmöglichkeit.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 24. Februar 2009, 21:06

psyalex hat geschrieben:Wo kann ich denn Einstellen ob der Terminal offen bleibt, der Starter selbst hat bei mir da keine Einstellmöglichkeit.
Also vorweg, ich kenne mich mit gnome eigentlich gar nicht aus und habe es erst seit ein paar Wochen auf meinem Rechner laufen ...

Wenn du ein Terminal öffnest hast du eine Menüleiste dabei, dort kannst du es einstellen. Wenn Anwendungen über Anwendungsstarter mit Terminal geöffnet werden, sollte sich das ebenfalls auswirken.

Es gibt auch die Möglichkeit, verschiedene Profile für das Terminal anzulegen, so dass ein Terminal mit einem bestimmten Profil gestartet wird.

Aber vielleicht sollte das mal jemand präzisieren oder auch gerade rücken, der von gnome mehr versteht als ich. :wink:
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 25. Februar 2009, 11:17

numerix hat geschrieben:Aber vielleicht sollte das mal jemand präzisieren oder auch gerade rücken, der von gnome mehr versteht als ich. :wink:
Das was du beschreibst ist das automatische Öffnen von Konsolen über die Starter. Das Problem das psyalex hat, ist dass die Konsole sich automatisch nach Beendigung das Programmes schließt.

Und ja, ich habe es anfangs auch falsch verstanden.

Eine Lösung wäre failwrap.sh, das ich gerade für den Zweck geschrieben habe (``chmod +x failwrap.sh``). Man übergibt ihm als Parameter das Programm das gestartet werden soll und wenn das Programm einen Fehler-Rückgabewert produziert wird der User gebeten Enter zu drücken.

Das kannst du, psyalex, als Kommando in den Starter schreiben (also ``/pfad/zu/failwrap.sh /pfad/zu/deinem/programm``) und den Starter auf "Programm mit Terminal" setzen. Dann bleibt das Terminal immer offen, falls Fehler auftreten und wartet auf ein Enter.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

Mittwoch 25. Februar 2009, 20:35

@Leonidas
Vielen Dank für das Bash-Skript! Ich hab es noch um "python" ergänzt (pystart.sh) und in /usr/bin geschoben. Jetzt kann ich Python Skirpte mit "pystart.sh /pfad/skript.py" starten.

Alex
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Mittwoch 25. Februar 2009, 22:04

Leonidas hat geschrieben:
numerix hat geschrieben:Aber vielleicht sollte das mal jemand präzisieren oder auch gerade rücken, der von gnome mehr versteht als ich. :wink:
Das was du beschreibst ist das automatische Öffnen von Konsolen über die Starter. Das Problem das psyalex hat, ist dass die Konsole sich automatisch nach Beendigung das Programmes schließt.
Das habe ich auch so verstanden und mein Vorschlag bezieht sich auch darauf. Ich hatte den Fall z.B. als ich aus SciTE heraus per shortcut python in einem separaten Terminal starten wollte und nach Beendigung des Skripts sich auch das Terminal geschlossen hat.

Auf die von mir beschriebene Weise lässt sich einstellen, was das Terminal in solchen Fällen macht. Dort kann man z.B. wählen "hold the terminal open" und das passiert dann auch.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 26. Februar 2009, 01:12

numerix hat geschrieben:Auf die von mir beschriebene Weise lässt sich einstellen, was das Terminal in solchen Fällen macht. Dort kann man z.B. wählen "hold the terminal open" und das passiert dann auch.
Ah, das meinst du! Ja, hast natürlich recht. Aber das gilt dann für alle startenden Terminals, das will man ggf. nicht haben.

P.S.: Ich sehe, ich bin nicht der einzige mit englischem GNOME :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Donnerstag 26. Februar 2009, 13:11

Leonidas hat geschrieben:
numerix hat geschrieben:Auf die von mir beschriebene Weise lässt sich einstellen, was das Terminal in solchen Fällen macht. Dort kann man z.B. wählen "hold the terminal open" und das passiert dann auch.
Ah, das meinst du! Ja, hast natürlich recht. Aber das gilt dann für alle startenden Terminals, das will man ggf. nicht haben.

P.S.: Ich sehe, ich bin nicht der einzige mit englischem GNOME :)
Und da war ich mir nicht sicher, ob das für alle Terminals gilt, oder man das per Profil einstellen und ein Terminal mit einem bestimmten Profil starten kann. Bei KDE und dessen Terminal-Emulator ging das zumindest.

Mein Gnome ist deutsch - aber den Satz haben sie beim Übersetzen vergessen .. :)
Antworten