Datei öffnen vor dem ausführen eines Scripts...

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
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

Donnerstag 4. Dezember 2008, 18:08

Ich grüße das Forum,

habe folgendes Problem:

Ich habe schon ein fertiges Python Script und habe dafür auch eine
Anleitung in Form einer Readme Datei, ist es möglich dass wenn ich
das script anklicke, diese Readme Datei ausgefürht wird (oder von mir aus auch eine Dialog Box)
bevor der eigentliche Code ausgeführt wird.

Oder andere Variante die Dialog Box erscheint mit Readme Inhalt
und wenn man auf OK klickt werden die nächsten Zeilen des Scripts ausgeführt.

...und wenn der Code erfolgreich ausgeführt wurde soll nochmals eine
Bestätigung erscheinen, z.B. auch eine Dialog Box in der steht ,
Code erfolgreich ausgeführt.

...das letztere könnte man wohl mit einem try/except block realisieren,
würde ich mal behaupten, sprich wenn Code nicht bis zum ende
des try blocks ausgeführt wurde dann kommt except block mit Dialog Box "nicht erfolgreich".

Bei der oberen Variante habe ich bisher noch keinen Lösungsansatz gefunden.

Hoffe jemand von euch hat da eine Idee...

gruß Sascha
Benutzeravatar
crackpod_
User
Beiträge: 40
Registriert: Mittwoch 3. Dezember 2008, 21:46

Donnerstag 4. Dezember 2008, 18:15

Hört sich jetzt so an als suchst du nach einem GUI-Toolkit. Dafür gibt es hier auch eine Abteilung die dir weiter helfen können sollte.
Falls es dir jetzt nicht direkt auf das GUI ankommt könntest du auch einfach aus deinem Script eine Konsolen Applikation machen und
dort die Readme Datei vor dem eigentlichen ausführen des Scriptes anzeigen lassen.

Code: Alles auswählen

print(open('readme').read())
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Donnerstag 4. Dezember 2008, 18:18

Leider kann man dir mit deinen Angaben nicht sonderlich helfen.

Möglich ist das natürlich, ob das natürlich toll ist Benutzer damit zu belästigen - sollten sie Hilfe brauchen können sie immernoch einen Blick auf die readme werfen.

Aber um dir zu helfen bräuchte man noch die Angabe welches GUI-Toolkit du verwendest.

Wenn es denn ein Konsolenprogramm ist würde ich es ganz sein lassen und die readme nur ausgeben, wenn die Parameter nicht stimmen oder ein bestimmter - z.B. `--help' - aufgerufen wurde.
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

Freitag 5. Dezember 2008, 08:23

Also ich habe ein Script erstellt welches einen Vorgang automatisiert.

Bevor dieses Script ausgeführt wird soll sich eine readme.txt Datei öffnen,
da man dieses Script nur unter bestimmten vorraussetzungen benutzen kann, bzw. einen bestimmten Parameter noch verändern kann.

Wenn das Script dann erfolgreich ausgeführt wurde soll sich ein Dialog öffnen mit der Meldung z.B. "Mission Accomplished"...
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Freitag 5. Dezember 2008, 09:24

Zunächst mal: Jeder Benutzer eines Skripts sollte vor dessen Benutzung die README lesen um sich möglicher Probleme bewusst zu sein. Wenn sich bei jedem Skriptaufruf eine Editor öffnet fände ich das Benutzer extrem(!) nervig.

Wenn du während der Ausführung des Skripts (in der Konsole) den Benutzer auf etwas Hinweisen möchtest nutze die print()-Funktion wie von crackpod_ vorgeschlagen und lass dir per Eingabe vom Benutzer bestätigen, dass er das verstanden hat. Wenn das Skript seine Arbeit beendet hat kannst du ebenfalls print() benutzen.

Für eine grafische Ausgabe beschäftige dich mal mit den GUI-Toolkits

gkuhl
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Freitag 5. Dezember 2008, 09:56

Hallo Sascha!

So etwas kannst du mit einem GUI-Toolkit (Graphical User Interface) machen. Für so kleine Sachen wie das einfache Anzeigen eines Textes und einer Dialogbox, kannst du das mit Python mitgelieferte "TkInter" verwenden.

Da ich TkInter nicht mag, zeige ich dir, wie man das mit wxPython http://wxpython.org erledigt.

Installiere wxPython und die zugehörige DEMO um dieses Beispiel ausführen zu können und mehr über wxPython zu erfahren.

http://wxpython.org/download.php#binaries

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx
import wx.lib.dialogs


def main():
    app = wx.PySimpleApp()
    
    # scrolledMessageDialog
    diag = wx.lib.dialogs.scrolledMessageDialog(
        message = (
            u"Hier kann ein langer Text stehen.\n"
            u"Hier kann ein langer Text stehen.\n"
            u"Hier kann ein langer Text stehen.\n"
            u"Hier kann ein langer Text stehen.\n"
        ),
        title = u"Überschrift"
    )
    # MessageBox (Hinweis)
    wx.MessageBox(
        message = u"Hier steht der Hinweistext.",
        caption = u"Hinweis"
    )
    # MessageBox (Fehler)
    wx.MessageBox(
        message = u"Hier steht der Fehlertext.",
        caption = u"Fehler", 
        style = wx.OK | wx.CENTER | wx.ICON_ERROR
    )
    # MessageBox (Ja/Nein Frage)
    if wx.MessageBox(
        message = u"Antworten Sie mit Ja oder Nein.",
        caption = u"Eine Frage",
        style = wx.YES | wx.NO | wx.CENTER | wx.ICON_QUESTION
    ) == wx.YES:
        print u"Es wurde JA geantwortet"
    else:
        print u"Es wurde NEIN geantwortet"


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

Freitag 5. Dezember 2008, 11:29

Vielen Dank für eure Antworten.

Vll. habe ich etwas zu kompliziert gedacht.

Ich habe das jetzt auf eine einfache Weise gelöst:

Ich habe um das Script in einen try/except Block eingefügt,
sprich wenn das Script erfolgreich ausgeführt wurde wird eine Konsole
geöffnet mit der Meldung "ergebnis.txt successfully created" und wenn
es im try block fehler gab wird der except block ausgeführt mit der
Anleitung und der Meldung "Failure occured ...try again" o.ä.

...müsste wohl die einfachste Lösung sein...

gruss Sascha
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 5. Dezember 2008, 12:59

Das löst jetzt zwar nicht das Problem mit der Readme-Datei, die am Anfang angezeigt werden sollte, aber gut ... ;-)
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

Freitag 5. Dezember 2008, 14:21

Im Prinzip schon...
in der Readme Datei wären nur die Anweisungen drin gestanden...
im Prinzip 3 Zeilen....

also :

Code: Alles auswählen

print("1...")
print("2....")
print("")
raw_input("try again")
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 5. Dezember 2008, 15:11

Ist mir zwar immer noch nicht klar, aber ist ja nicht so wichtig :-D
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

Freitag 5. Dezember 2008, 15:19

Ist mir zwar immer noch nicht klar, aber ist ja nicht so wichtig
...ja ich weiss auch nich wie ich dir das anders erklären soll...
...ich hab geschrieben: eine Anleitung in Form einer Readme und
ich habe das jetzt so gelöst das eine Konsole mit Eingabeaufforderung geöffnet wird anstatt einer
text datei...
Antworten