SplashScreen maker

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Ich habe im laufe eines Projektes ein Modul entwickelt, womit man einen SplashScreen vor das Programm schalten kann.
Das Programm lebt in einem als eigenes Programm weiter.

Man bedient es so:

Code: Alles auswählen

import tkh_splash # SplashScreen Modul

splash("Mein Programmtitel", "path/to/your/image.png", "myapp.py")
Syntax:

Code: Alles auswählen

splash(string title, string imageUrl, string execute)
Der 'title' ist natürlich der Programmtitel, der im SplashScreen angezeigt wird. Momentan ist er Pflicht.
Der 'imageUrl' ist der Pfad zur PNG-Datei, die als SplashScreen angezeigt wird.
Der 'execute'-String ist der Pfad zur auszuführenden Datei, also auch Klasse für nicht-python Programme.
Bild

Ein Feedback ist gerne erwünscht.
Source-Code: http://www.python-forum.de/pastebin.php?mode=view&s=181
LG Maik
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Für Fehler gibt es Exceptions. `exit` hat in Libraries nichts zu suchen.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Um das mal fortzuführen. Statt "os.system" solltest du dir mal das subprocess-Modul ansehen und Konstanten für Höhe und Breite haben meiner Ansicht nach auch nichst in der Funktion verloren. Ebenso wenig in einer Funktion verloren, hat eine Tk-mainloop. Hierzu solltest du ein "master" oder "parent" als Parameter ermöglichen, wenn dieser nicht angegeben wird vom Benutzer, dann kannst du ein Toplevel-Widget erzeugen. Wenn nämlich jemand deinen SplashScreen in einer Tk-Umgebung nutzen will, erschaft er zwei Tk-Mainloops (seine eigene und deine), das Ergebnis ist ein Programm was den Nutzer mit Abstürzen plagen kann.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Vielen Dank für das Feedback. Werde ich gleich nächste Woche einbauen.
LG Maik
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Ich habe es jetzt schon fertig!
Leider konnte ich den 'exit'-Befehl nicht rausnehmen, da ich das Programm ja beenden muss. Exception werfe ich trotzdem.
Kennt ihr einen anderen weg, das Programm sauberer zu beenden?
http://paste.pocoo.org/show/368925/
LG Maik
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Ich glaube, du hast den Sinn von Exceptions noch nicht ganz verstanden ;-) Hast du denn mal das Tutorial (http://tutorial.pocoo.org) durchgearbeitet? Wenn eine Exception geworfen wird und unbehandelt bleibt, beendet sich das Programm automatisch, weil der Python-Interpreter nicht mehr "weiter weiß".

Ansonsten solltest du noch die Camelcase-Namen verbessern.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@Dauerbaustelle
Welche Camelcase-Name sprichst du an? splashScreen, imageUrl, startApp sind mixedCase

@daemonTutorials
und sollte besser zu klein_mit_bodenstrich werden. Ansonsten kann ich keine PEP 8 Verstöße sehen. Eventuell noch 4 statt 8 Leerzeichen nutzen.

Ich würde noch ein fadeout vorschlagen. Geht über das "-alpha" wm_attribute, leider aber nicht unter X11. Unter Windows 2k+ und Mac OSX geht es ohne Probleme.
Edit: Kleine korrektur "-alpha" funktioniert in X11 auch, wenn man compiz aktiviert hat.
Zuletzt geändert von Xynon1 am Montag 11. April 2011, 14:19, insgesamt 1-mal geändert.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Xynon1 hat geschrieben:@Dauerbaustelle
Welche Camelcase-Name sprichst du an? splashScreen, imageUrl, startApp sind mixedCase
Camelcase und Mixedcase sind austauschbar.
BlackJack

@Dauerbaustelle: Nicht nach PEP8. Das unterscheided `CapitalizedCase` a.k.a. `CamelCase` von `mixedCase` durch den keinen Anfangsbuchstaben.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

BlackJack hat geschrieben:@Dauerbaustelle: Nicht nach PEP8. Das unterscheided `CapitalizedCase` a.k.a. `CamelCase` von `mixedCase` durch den keinen Anfangsbuchstaben.
Von mir aus. Das war eigentlich eine versteckte Aufforderung an Xynon1, mit dem unhöflichen Rumklugscheißen aufzuhören.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Hehe :mrgreen:, sorry, ihr könnt an mir gerne auch so rumnörgeln. Aber wie soll man denn mit bekommen, dass man irgendwo was falsches aufgeschnappt hat, wenn niemand einen darauf hinweist. Gutes Beispiel dafür sind die hälfte aller Tkinter-Tutorials im Netz. Ich bin der Meinung, besser einmal korrigiert werden, als es auch nur ein zweites Mal falsch zumachen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Finde ich komisch. In meinem Editor werden 4 angezeigt. Muss ich mal gucken.

Die Variablen werde ich soweit abändern.
Den fadeout werde ich evtl. in der nächsten Version einbauen.
LG Maik
Antworten