Hi!
Bin noch ein blutiger Anfänger, aber hab schon zwei kleine Fragen.
1.) Kann man mit Python Windows Applications programmieren?
2.) Währe es damit auch z.B. möglich einen Instant Messenger mit Python auf Windows Basis zu programmieren?
OOP in Python?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Drake!
Willkommen im Python-Forum!
Und hier die "kurzen" Antworten:
mfg
Gerold
Willkommen im Python-Forum!
Und hier die "kurzen" Antworten:
Ja Z.B. mit http://wxpython.org/Drake hat geschrieben:1.) Kann man mit Python Windows Applications programmieren?
Ja Z.B. mit http://wxpython.org/Drake hat geschrieben:2.) Währe es damit auch z.B. möglich einen Instant Messenger mit Python auf Windows Basis zu programmieren?
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Danke für die netten Antworten.
Ach, bevor ich nen neuen Thread erstelle gleich noch ne Frage:
Ist es dann mit wxPython auch möglich .exe zu erstellen die auch wie normale laufen? Zurzeit gibt es ja py2exe aber da kann man die Exe nur über cmd starten.
Ich weiß, edit wäre besser aber dann hätts keiner gesehen. xD
Ist es dann mit wxPython auch möglich .exe zu erstellen die auch wie normale laufen? Zurzeit gibt es ja py2exe aber da kann man die Exe nur über cmd starten.
Ich weiß, edit wäre besser aber dann hätts keiner gesehen. xD
Nope .. Du kannst aber Python Anwendungen mittels speziellen Drittanbieter Packaging-Programmen zu ausführbare .exe, etc. umwandeln.
Je nach Tool ist die einfacher und umfangreicher oder auch nicht .
Die bekanntesten Tools sind wohl:
- py2exe
und
- PyInstaller
Aber ... wie kommst Du dadrauf, dass die Programme nur über eine CommandShell zu betreiben wären?
Mit diesen Packaging-Tools kannst Du sogar Anwendungen "paketieren", die dem Verhalten von Com-Servern oder Windows-Diensten entsprechen.
Je nach Tool ist die einfacher und umfangreicher oder auch nicht .
Die bekanntesten Tools sind wohl:
- py2exe
und
- PyInstaller
Aber ... wie kommst Du dadrauf, dass die Programme nur über eine CommandShell zu betreiben wären?
Niemand hindert Dich dadran, eine Executable über einen Dateibrowser, aus einem anderen Script herraus (z.B. Batch, Python, Shell, etc.) oder was auch immer herraus aufzurufen .Drake hat geschrieben:... Zurzeit gibt es ja py2exe aber da kann man die Exe nur über cmd starten...
Mit diesen Packaging-Tools kannst Du sogar Anwendungen "paketieren", die dem Verhalten von Com-Servern oder Windows-Diensten entsprechen.
Zuletzt geändert von Masaru am Mittwoch 14. März 2007, 16:13, insgesamt 1-mal geändert.
Mit py2exe kann man keine ausführbaren .exe machen ..
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Drake!Drake hat geschrieben:Ist es dann mit wxPython auch möglich .exe zu erstellen die auch wie normale laufen? Zurzeit gibt es ja py2exe aber da kann man die Exe nur über cmd starten.
Das hängt nicht von wxPython ab. Dafür ist py2exe oder cx_Freeze zuständig. Wie kommst du darauf, dass diese EXE-Dateien nur über CMD gestartet werden können? Das ist nicht wahr. Du kannst, wie mit jedem anderen Programm, eine Verknüpfung ins Startmenü legen oder das Programm mit einem Doppelklick auf das Icon starten.
Du kannst die mit py2exe oder cx_Freeze erstellten Dateien mit einem Installer zu einem Installationspaket zusammenstellen, wie du es von anderen Programmen gewohnt bist.
http://www.python-forum.de/topic-5726.html
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
vielleicht solltest du dir erstmal die Internetseiten und oder die Dokumentationen anschauen.Py2Exe Internetseite hat geschrieben: py2exe is a Python Distutils extension which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.
MfG EnTeQuAk
Aber wenn ich z.B. ein schlichtes Hello World Programm schreibe und in eine .exe konvertiere, dann öffnet sich das Fenster ein paar ms und schließt sich dann wieder.
War aber auch zu erwarten oO Selbst wenn du die Python Datei mit einem Doppelklick öffnest, öffnet sich das CMD Fenster kurz und es schließt sich wieder... warum?Drake hat geschrieben:Aber wenn ich z.B. ein schlichtes Hello World Programm schreibe und in eine .exe konvertiere, dann öffnet sich das Fenster ein paar ms und schließt sich dann wieder.
Könntest am ende des Programms ein raw_input() machen, wenn du willst oO'' Dann würde es gehen. Aber Konsolapplikationen sollte man eh über CMD aufrufen, sind wohl eher dafür gedacht...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Drake!Drake hat geschrieben:Aber wenn ich z.B. ein schlichtes Hello World Programm schreibe und in eine .exe konvertiere, dann öffnet sich das Fenster ein paar ms und schließt sich dann wieder.
Klicke mit der Maus auf "Start", dann auf "Ausführen" und gib in das Textfeld "dir" (ohne Anführungszeichen) ein. Starte das Programm mit einem Klick auf "OK".
Was passiert? Das Programm "dir" ist ein Kommandozeilenprogramm und gibt einfach nur einen Text an die Standardausgabe aus. Das Programm beendet sich aber sofort nach Ende des Programms wieder selbst. Deshalb flickert kurz ein schwarzes Fenster hoch, aber das war es auch schon.
Startest du CMD und führst innerhalb von CMD das Programm "dir" aus, dann bleibt die Anzeige erhalten, weil CMD noch offen bleibt.
Genau so verält es sich auch mit solchen HalloWelt-Programmen, die einfach nur ein "Hallo Welt" an die Standardausgabe schreiben. Diese werden ausgeführt und sofort danach wieder beendet. Führt man diese innerhalb einer CMD-Sitzung aus, dann bleibt die Ausgabe sichtbar, da die CMD-Sitzung weiter läuft. Führt man sie mit einem Doppelklick aus, dann beendet sich das Programm sofort danach wieder.
Wenn du ein Programm schreiben möchtest, das nicht nur einen Text an die Standardausgabe (=STDOUT =print) schreibt, dann musst du ein Framework wie z.B. wxPython benutzen und damit eine GUI entwickeln. Also Fenster definieren, Widgets darauf platzieren und anzeigen lassen. Wie so etwas aussehen könnte, siehst du hier: http://www.python-forum.de/topic-5722.html
Um einfach nur mal kurz einen Text in einem Fenster anzuzeigen, gibt es einen Trick: http://www.python-forum.de/topic-5721.html
mfg
Gerold
Zuletzt geändert von gerold am Mittwoch 14. März 2007, 16:49, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
HalloWelt-Programm mit Fensterausgabe:
mfg
Gerold
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-1")
app = wx.PySimpleApp(redirect = True)
print "Hallo Welt"
app.MainLoop()
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Erstmal danke an alle ;D
Dazu hab ich gleich einen Verbesserungsvorschlag: Man sollte eine "Anfänger-Area" einrichten .. Für solche Fragen wie meine ;D
Und noch eine Frage ^^
Das Programm soll solange laufen bis exit eingegeben wird und sich dann beenden .. Es läuft zwar weiter aber die Eingabe von exit hat keine Wirkung .. Woran liegt das?
Dazu hab ich gleich einen Verbesserungsvorschlag: Man sollte eine "Anfänger-Area" einrichten .. Für solche Fragen wie meine ;D
Und noch eine Frage ^^
Code: Alles auswählen
import sys
i = 0
print "Zum schließen bitte exit eingeben!"
exit = ""
stop = raw_input().upper()
while i < 1:
while stop == "exit":
if stop == "exit":
sys.exit(0)
else:
"Programm wird weitergeführt!"
Das "raw_input" solltest Du mit in die Schleife packen, damit bei Falscheingaben die Schleife im erneuten Zuge einen neuen Wert vergleichen kann.
Du kannst z.B. auch in Python aus Schleifen mit dem break Statemen ausbrechen.
Beispiel:
In Python verwendet man gerne für eine immer fortwährende Schleife die Kopfdefinition: oder
Du kannst z.B. auch in Python aus Schleifen mit dem break Statemen ausbrechen.
Beispiel:
Code: Alles auswählen
i = 0
while True
if i > 10:
break
i += 1
Code: Alles auswählen
while True
Code: Alles auswählen
while 1:
Zuletzt geändert von Masaru am Mittwoch 14. März 2007, 16:53, insgesamt 1-mal geändert.
Code: Alles auswählen
import sys
i = 0
print "Zum schließen bitte exit eingeben!"
exit = ""
while i < 1:
stop = raw_input().upper()
while stop == "stopit":
if stop == "stopit":
sys.exit(0)
else:
"Programm wird weitergeführt!"
(Hab das exit mal in stopit umbenannt ..)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Drake!Drake hat geschrieben:Es läuft zwar weiter aber die Eingabe von exit hat keine Wirkung .. Woran liegt das?
Da musst du wohl noch ein wenig an der Programmlogik arbeiten.
Viele Wege führen nach Rom -- so auch dieser:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
print "Zum Schliessen bitte 'exit' eingeben!"
while not raw_input().upper() == "EXIT":
print "Programm wird weitergefuehrt!"
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
...und hier eine andere Variante.
mfg
Gerold
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
print "Zum Schliessen bitte 'exit' eingeben!"
while True:
if raw_input().upper() == "EXIT":
break
print "Programm wird weitergefuehrt!"
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Kurz zum Beispiel von gerold (meins sieht ähnlich grad hier aus *g*, war nur langsamer).
1.) Wenn Du Sonderzeichen in Deinem Code mit eincodieren möchtest, musst Du die Datei in einem Encoding abspeichern, welches ein gültiger in Codec in der sogenannten "Magic-Line" (die 1. oder 2. Zeile, mit einem # Zeichen eingeleitet) ist, und diesen Codec dort mit auch angeben.
2.) Die Methode <string>.upper() wandelt Buchstabe in Großbuchstaben um, <string>.lower() in Kleinbuchstaben ... falls halt nicht eh schon so vorhanden.
3.) Manchmal ist es geschickter kein explizites sys.exit() zu setzen, auch wenn es verlockt. Wenn ein Programmdurchlauf sein Ende ohne Fehler erreicht hat, beendet der Python Interpreter eh den Aufruf mit dem Exitcode 0.
1.) Wenn Du Sonderzeichen in Deinem Code mit eincodieren möchtest, musst Du die Datei in einem Encoding abspeichern, welches ein gültiger in Codec in der sogenannten "Magic-Line" (die 1. oder 2. Zeile, mit einem # Zeichen eingeleitet) ist, und diesen Codec dort mit auch angeben.
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
3.) Manchmal ist es geschickter kein explizites sys.exit() zu setzen, auch wenn es verlockt. Wenn ein Programmdurchlauf sein Ende ohne Fehler erreicht hat, beendet der Python Interpreter eh den Aufruf mit dem Exitcode 0.