Python Anfängerfragen

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.
pole23
User
Beiträge: 17
Registriert: Sonntag 18. Juli 2010, 12:06

Hallo,

ich habe vor, mich mit Python zu beschäftigen. Ich möchte ein Programm mit GUI schreiben. Ich benutze gerade Ubuntu und würde auch unter Ubuntu programmieren wollen. Diese Anwendung soll, wenn sie mal fertig ist, auf für Windows genutzt werden. Könnte ihr mir da mal einen Tipp geben, mit welche GUI ich da am besten arbeite und mir eventuell eine Editor Empfehlung geben?

Gruß
Pole23
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

pole23 hat geschrieben: ich habe vor, mich mit Python zu beschäftigen. Ich möchte ein Programm mit GUI schreiben.
Das beißt sich leider. GUIs sind für Anfänger leider nicht wirklich zu empfehlen; muss es denn wirklich eine GUI haben? Evtl. reicht ja für die Problemlösung eine Konsolenapplikation? Welches Problem willst Du denn lösen? Klingt für mich so, als hättest Du da ein ganz spezielles Problem vor Augen. Evtl. gibt es dafür ja bereits Lösungen.
Diese Anwendung soll, wenn sie mal fertig ist, auf für Windows genutzt werden. Könnte ihr mir da mal einen Tipp geben, mit welche GUI ich da am besten arbeite und mir eventuell eine Editor Empfehlung geben?
Das geht mit so ziemlich allen GUIs für Python. Die beiden am meisten empfohlenen hier dürften PyQt und PyGtk sein. Daneben gibts noch Bindings für wxWidgets und TkInter aus der StandardLib. Letzteres würde ich allerdings nicht verwenden.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hyperion hat geschrieben:Daneben gibts noch Bindings für wxWidgets und TkInter aus der StandardLib. Letzteres würde ich allerdings nicht verwenden.
Generell folge ich dem zwar, aber wenn die Aufgabe nicht sonderlich komplex ist (und das will man bei einem Startprojekt hoffen), koennte es genau das richtige sein.

@OP: Bitte benutze ausdrucksstaerkere Thread-Titel.
Was den Editor angeht: Nutz doch mal die Suchfunktion. Daneben ist alles sehr brauchbar das Syntax-Highlighting unterstuetzt und fuer dich angenehm.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Ich glaube schon, dass man das (eingeschränkt) parallel angehen kann. Man nehme ein bestehendes, einfach gestricktes gui programm und dann ändert man einfach dort Dinge oder wendet man sie an, die man im Python Tutorial zB lernt. Eine gute interactive shell hilft sicher auch. Hier spricht eigentlich nichts gegen idle.

Da ich ein bisschen wxPython fixiert bin, würde ich einmal das paket mitsamt den Demo installieren. Daneben wird der ganze Sourcecode von wxPython in Action auch gleich mitgeliefert. Mit Pycrust hast du dann auch gleich eine gute Shell. Dann gibts bei der WxPython Wiki noch zahlreiche interessante Seiten vom Anfänger bis zum fortgeschrittenen.

Daneben sind alle gängigen Guis, wie bereits mein Vorposter erwähnt hat, platformunabhängig. Ich würde mir einmal überschlagsmässig screenshots und eine kurze Zusammenfassung oder Vergleich der GUIs ansehen. PyQt und besonders pygtk sind recht beliebt, was man an der Anzahl der Anwendungen sieht.

Text Editoren gibt es so viele, dass sich das aufzählen nicht lohnt. Zum Anfangen ist scite vielleicht gar nicht so schlecht.
pole23
User
Beiträge: 17
Registriert: Sonntag 18. Juli 2010, 12:06

Vielen Dank für die schnellen Antworten. Das Programm soll eigentlich "nur" Daten aus einer Datenbank lesen und auch schreiben können. Daher auch der Gedanke mit der GUI.

Ich werde mir jetzt mal die GUI Vorschläge mal anschauen und mich dann bei Fragen mit Sicherheit noch mal melden.:-)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

pole23 hat geschrieben:Vielen Dank für die schnellen Antworten. Das Programm soll eigentlich "nur" Daten aus einer Datenbank lesen und auch schreiben können. Daher auch der Gedanke mit der GUI.
Anhand dieser Aussage sehe ich da noch keine Notwendigkeit einer GUI ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
noisefloor
User
Beiträge: 4261
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

der Punkt mit der GUI ist: du musst dich mit der GUI _UND_ Python gleichzeitig beschäftigen.

Das Lesen und Schreiben in eine DB kannst du mit Python mit ein paar wenigen Zeilen Code realisieren. Wenn du eine GUI rundherum baust brauchst du für einfache Progs sicherlich mindestens 5x so viel Code.

BTW, ich habe es in einem ähnlich gearteten Thread schon mal gesagt: die IMHO einfachste Art der GUI ist eine Weboberfläche im Browser. Setzt natürlich voraus, dass mein sein Prog als Webanwendung ausführen kann.

Gruß, noisefloor
pole23
User
Beiträge: 17
Registriert: Sonntag 18. Juli 2010, 12:06

Das mit der webanwendung ist eine gute Idee. Wie genau setze ich sowa in Python um?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

pole23 hat geschrieben:Das mit der webanwendung ist eine gute Idee. Wie genau setze ich sowa in Python um?
Am besten mit einem Web-Framework; dazu siehe auch hier:
http://wiki.python-forum.de/Python%20im%20Web

Allerdings ist das auch so eine Sache... auch dafür bedarf es imho einiges an Kenntnissen der Sprache, die man zu Beginn einfach noch nicht hat.

Die große Frage dabei ist auch oftmals, ob Du noch nie programmiert hast bzw. Python Deine erste Programmiersprache ist, oder Du Umsteiger bist und Dich vor allem nur an die Python spezifischen Dinge gewöhnen musst. Bei letzterem wäre der Weg sicher sehr zu empfehlen. Als "blutiger" Anfänger würde ich zu einer reinen Konsolenapplikation raten und die GUI (wie auch immer geartet) später drum herum bauen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

noisefloor hat geschrieben:BTW, ich habe es in einem ähnlich gearteten Thread schon mal gesagt: die IMHO einfachste Art der GUI ist eine Weboberfläche im Browser. Setzt natürlich voraus, dass mein sein Prog als Webanwendung ausführen kann.
Das macht es auch nicht einfacher. Im Gegenteil. Man muss das ganze zweimal schreiben einmal „in HTML/JS“ und einmal in Python. Zudem muss man sich damit rumschlagen, dass HTML statuslos ist. Und wenn die Anwendung auch noch komfortabel benutzbar sein soll wird es richtig aufwändig. Klar, dafür gibt es Bibliotheken, aber die muss man auch erstmal kennen.

Komfort ist dann leider nochmal eine Spur schlechter. Es ist schon schwer genug ein gutes „Komplettpacket“ für klassische GUI-Entwicklung zu bekommen (für Python noch schwieriger). Für Webanwendungen existiert so etwas nicht mal.

Die Beste GUI-Bibliothek für Python ist imo Traits 3. Gerade für einfachste Skripte sehr gut geeignet. Ist allerdings vermutlich nicht was für jeden und die Abhängigkeiten sind recht umfangreich. Habs bis jetzt nur mit der kompletten EPD-Distributions zum Laufen bekommen.
problembär

pole23 hat geschrieben:ich habe vor, mich mit Python zu beschäftigen. Ich möchte ein Programm mit GUI schreiben. Ich benutze gerade Ubuntu und würde auch unter Ubuntu programmieren wollen. Diese Anwendung soll, wenn sie mal fertig ist, auf für Windows genutzt werden. Könnte ihr mir da mal einen Tipp geben, mit welche GUI ich da am besten arbeite und mir eventuell eine Editor Empfehlung geben?
pole23 hat geschrieben:Das Programm soll eigentlich "nur" Daten aus einer Datenbank lesen und auch schreiben können. Daher auch der Gedanke mit der GUI.
Wer fragt, kriegt Antwort:
Editor: vim
GUI-Toolkit: Tkinter
Grund: Derselbe Tkinter-GUI-Code läuft ohne weitere Installationen sowohl auf Linux und Windows.
Aber Ausnahme: Wenn Du sehr viele Datensätze aus der Datenbank in dem GUI darstellen willst, eignen sich andere Toolkits besser.

Gruß
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

problembär hat geschrieben:Wer fragt, kriegt Antwort:
Editor: vim
GUI-Toolkit: Tkinter
Grund: Derselbe Tkinter-GUI-Code läuft ohne weitere Installationen sowohl auf Linux und Windows.
Aber Ausnahme: Wenn Du sehr viele Datensätze aus der Datenbank in dem GUI darstellen willst, eignen sich andere Toolkits besser.
Oder auch ganz viele:

Editor: vim
GUI-Toolkit: PyGTK
Grund: Derselbe PyGTK-GUI-Code läuft ohne weitere Installationen sowohl auf Linux und Windows.

Editor: emacs
GUI-Toolkit: PyQt
Grund: Derselbe PyQt-GUI-Code läuft ohne weitere Installationen sowohl auf Linux und Windows.

Ich könnt jetzt noch beliebig permutieren...
Zuletzt geändert von Leonidas am Montag 19. Juli 2010, 06:53, insgesamt 1-mal geändert.
Grund: Copy&Paste Fail korrigiert
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Leonidas hat geschrieben: Editor: emacs
GUI-Toolkit: PyQt
Grund: Derselbe Tkinter-GUI-Code läuft ohne weitere Installationen sowohl auf Linux und Windows..
:K
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
noisefloor
User
Beiträge: 4261
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Das macht es auch nicht einfacher. Im Gegenteil. Man muss das ganze zweimal schreiben einmal „in HTML/JS“ und einmal in Python.
Wieso 2x? Was ich meine ist, dass man eine einfache "schön formatierte" Ausgabe mit HTML+CSS (und ohne JS) ziemlich einfach erreicht. Eine komplette GUI a la GTK oder Qt mit HTML/CSS/JS nachzubauen ist in der Tat sehr (zu) aufwendig.

Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

noisefloor hat geschrieben:Hallo,
Das macht es auch nicht einfacher. Im Gegenteil. Man muss das ganze zweimal schreiben einmal „in HTML/JS“ und einmal in Python.
Wieso 2x? Was ich meine ist, dass man eine einfache "schön formatierte" Ausgabe mit HTML+CSS (und ohne JS) ziemlich einfach erreicht.
Naja, die Ausgabe ist ja nicht das Problem, sondern die Eingabe ;-)

Geht es nur um hübsch formatierte Ausgaben, so kann man die auch losgelöst mit eineer Template Engine erzeugen.

Leider wissen wir ja immer noch nicht, was der OP eigentlich konkret machen möchte.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
pole23
User
Beiträge: 17
Registriert: Sonntag 18. Juli 2010, 12:06

Ich möchte mit der ersten Anwendung verschiedene Informationen über Kunden und deren Server aus einer Datenbank auslesen und speichern können. Das ich zum Beispiel die IP Adressen von einem SErver eingeben kann und dann Information über den Kunden und die vorhandenen Zugriffe und Passwörter und so erhalte.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

pole23 hat geschrieben:Ich möchte mit der ersten Anwendung verschiedene Informationen über Kunden und deren Server aus einer Datenbank auslesen und speichern können. Das ich zum Beispiel die IP Adressen von einem SErver eingeben kann und dann Information über den Kunden und die vorhandenen Zugriffe und Passwörter und so erhalte.
Das kann man doch auch ohne GUI! Die benötigten Parameter kann man leicht an ein CLI übergeben. Wobei das alles im Moment eher nach Dumpen von Daten klingt... da sehe ich nocht nicht den Nutzen von Python.

Auf jeden Fall hast Du mit dem DB-Modul oder ggf. einem ORM genug am Hacken für den Anfang. Da würde ich mir nicht noch ne GUI aufhalsen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
pole23
User
Beiträge: 17
Registriert: Sonntag 18. Juli 2010, 12:06

Ich wollte mit Python generell mal anfangen und da fiel mir das Projekt halt als erstes ein. Aber du hast recht, ich werde erstmal versuchen, ein alles Konsolenbasierend zum laufen zu bekommen, was mit Sicherheit schwer genug seien wird:-)
Benutzeravatar
noisefloor
User
Beiträge: 4261
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn es um die reine Abfrage gem. deinem Beispiel geht, dann sollten das in Python ~10 Zeilen Code sein. Wenn man "schön" formatieren will vielleicht auch ein paar mehr.

Gruß, noisefloor
pole23
User
Beiträge: 17
Registriert: Sonntag 18. Juli 2010, 12:06

Es sollen dann aber auch noch diverse Daten, Servername, IP, Zugangdaten für Admin, eventuell angelegte FTP User und und und...
Antworten