Anfängerfrage zu Eric3

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
alf17
User
Beiträge: 3
Registriert: Freitag 1. Juni 2007, 04:44

Hallo alle miteinander,
nach langen Suchen im Web möchte ich nun doch mal eine sicherlich nervige Frage stellen, obwohl die sicherlich schon irgendwo beantwortet ist - ich hab's aber leider nirgendwo gefunden :( Wie kann ich mittels Eric ein Programm erstellen, das eine "leichte" grafische Oberfläche hat - wie kann ich überhaupt eine grafische Oberfläche erstellen? Unter ->Werkzeuge ->Designer kann ich ja eine GUI bauen - aber wie bringe ich diese in's Programm?
Hintergrund ist folgender: Bis vor ca. 1,5 Jahren hatte ich nur XP und habe dort 'n bissel mit VB rumgebastelt - ging. Nun habe ich nur noch Linux und bin auch ein richtiger Fan von Linux (Suse10.2, Ubuntu, Puppy usw.) geworden ->nie wieder Software aus Redmont!
Nun habe ich aber unter XP ein schickes Programm gefunden, mit dem man Statik, Biegungen, Torsion etc. bestimmen kann. Da sowas im Hintergrund hauptsächlich aus dem abrufen von Formeln und Tabelleneinträgen zu bestehen scheint, dachte ich mir, man könnte so was auch unter Linux in Python programmieren.
Wie dem auch sei, meine Hoffnung ist die, an Hand eines solchen "Projektes" Python zu erlernen - nur bin ich schon am Anfang am straucheln. Oder ist meine Vorgehensweise absurd? Brauche ich eine andere Programmierumgebung? VB habe ich anfangs mit "VB für Kids" (Buch) gelernt - vermutlich das Niveau, das mir hilft :) Gibts so was für Python?

Vielen Dank! Ein hilfesuchender Alf
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Alf, willkommen im Forum,
alf17 hat geschrieben:Wie kann ich mittels Eric ein Programm erstellen, das eine "leichte" grafische Oberfläche hat
Was ist eine "leichte" Oberfläche?
alf17 hat geschrieben: - wie kann ich überhaupt eine grafische Oberfläche erstellen?
Hängt vom Toolkit ab. Du kannst entweder einen GUI-Designer nutzen oder die GUI von Hand programmieren. Hat beides Vor- und Nachteile.
alf17 hat geschrieben:Wie dem auch sei, meine Hoffnung ist die, an Hand eines solchen "Projektes" Python zu erlernen - nur bin ich schon am Anfang am straucheln. Oder ist meine Vorgehensweise absurd? Brauche ich eine andere Programmierumgebung?
Naja, eine Programmierumgebung (IDE) brauchst du keine - ich bin seit Jahren mit Editoren wie SciTE oder Vim unterwegs und komme gut zurecht. Dein Vorgehen ist insofern absurd oder besser gesagt voreilig, da du dich gleich auf GUIs stürzen willst. Damit solltest du erst warten - das Programm kannst du ja auch erstmal so implementieren, dass es sich über die Shell bediehnen lässt. Eine GUI kannst du hinterher auch machen. Das ist überhaupt ein Vorgehen was ich empfehlen kann - erst die Logik schreiben, dann eine GUI.
alf17 hat geschrieben:VB habe ich anfangs mit "VB für Kids" (Buch) gelernt - vermutlich das Niveau, das mir hilft :) Gibts so was für Python?
Python für Kids von Gregor Lingl. Allerdings würde ich wenn dann die 2. Auflage lesen.

P.S.: Ich habe mir mal die Amazon-Bewertungen zu dem Buch durchgelesen und lustigerweise kenne ich beide Rezensenten aus der Python-Community :D
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
alf17
User
Beiträge: 3
Registriert: Freitag 1. Juni 2007, 04:44

Hallo Lonidas,
eine einfache Oberfläche stelle ich mir z.B. so vor wie die von "Kover" oder ähnliches. Also ein paar Knöpfe, Labels, Textausgaben, Listboxen. Kein stylischer Schnickschnack - halt wie'n Werkzeug.
Unter VB könnte man parallel sowohl die einzelnen Formen als auch den Code erstellen ->geht das unter Python (Eric) nicht so?
Wenn ich Dich richtig verstanden habe, ist der Weg so, das man den Code zuerst schreibt - und die Ergebnisse von Berechnungen dann als Konsolenausgabe sieht? Über die Shell bedienen heist, es käme in meinem Beispiel die Frage "Wie lang ist der zu berechnende Träger? als Textzeile in der Shell, darunter würde dann der Cursor blinken und ich würde z.B 5 eingeben, Enter drücken und dann käme die nächste Frage - z.B. nach der Dicke? Hätte ich dann alle Eingaben gemacht, auf die Frage: "Jetzt berechnen? " mit ja geantwortet -> dann käme z.B die formatierte Antwort:"Die Durchbiegung beträgt ..... an der Stelle....."
Egentlich hatte ich gehofft, die Technologie innerhalb der IDE wäre ähnlich der von VB :cry: , nur das es jetzt halt in Python ist.
Naja, auf alle Fälle werde ich mir so schnell es geht Python für Kids antun - vielleicht bringt das schon etwas Licht ins Dunkel.

Viele Grüße, ein etwas verwirrter Alf
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

alf17 hat geschrieben:eine einfache Oberfläche stelle ich mir z.B. so vor wie die von "Kover" oder ähnliches.
Sagt mir nichts, konnte auch keine Screenshots auf der Homepage finden, weil da irgendwas kaputt war.
alf17 hat geschrieben:Also ein paar Knöpfe, Labels, Textausgaben, Listboxen. Kein stylischer Schnickschnack - halt wie'n Werkzeug.
Lässt sich mit jedem GUI-Designer machen.
alf17 hat geschrieben:Unter VB könnte man parallel sowohl die einzelnen Formen als auch den Code erstellen ->geht das unter Python (Eric) nicht so?
Ohne Eric jetzt benutzt zu haben: Nein. Python ist im Gegensatz zu VB unabhängig von einer GUI. Dadurch kann man Programme ohne GUI schrieben, dafür hat man etwas mehr Aufwand, eine GUI zu integrieren.
alf17 hat geschrieben:Wenn ich Dich richtig verstanden habe, ist der Weg so, das man den Code zuerst schreibt - und die Ergebnisse von Berechnungen dann als Konsolenausgabe sieht? Über die Shell bedienen heist, es käme in meinem Beispiel die Frage "Wie lang ist der zu berechnende Träger? als Textzeile in der Shell, darunter würde dann der Cursor blinken und ich würde z.B 5 eingeben, Enter drücken und dann käme die nächste Frage - z.B. nach der Dicke? Hätte ich dann alle Eingaben gemacht, auf die Frage: "Jetzt berechnen? " mit ja geantwortet -> dann käme z.B die formatierte Antwort:"Die Durchbiegung beträgt ..... an der Stelle....."
Richtig. So ist der beste Weg mit Python anzufangen. Die Programmierung mit GUIs ist zwar nicht wirklich schwierig, aber wenn man Python-Kenntnisse schon hat, schadet es niemals.
Du kannst dir ja What's On Air ansehen. Dort hast du die Datei ``whatsonair.py`` welche die Funktionalität bereitstellt und ein Textmode-UI bereitstellt. Daneben gibt es noch ``seewhatsonair.py``, welches eine grafische Oberfläche bietet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Ich glaube Leonidas sagt hier etwas zu kategorisch Nein. Ich habe `Eric` auch noch nicht wirklich benutzt, aber mal kurz reingeschaut. Die IDE bindet den Qt-Designer ein, mit dem man Qt-Oberflächen zusammenklicken und in sprachneutralen Dateien (*.ui) speichern kann. Man kann dort für Ereignisse, wie zum Beispiel einen Mausklick auf einen Button, den Namen einer Handlerfunktion angeben. Irgendwie wird man diese Datei mit einem Python-Programm verbinden können, wo dann eine entsprechende Funktion bereitsteht, die aufgerufen wird, wenn der Button angeklickt wird.

Ich habe mit Qt keine Erfahrung, aber ich nehme an, das wird nicht viel komplizierter sein als eine eine Gtk-Oberfläche über eine *.glade-Datei mit einem Python-Programm zu verbinden.
alf17
User
Beiträge: 3
Registriert: Freitag 1. Juni 2007, 04:44

Hallo,
das Programm "What's om air" habe ich mir mal angeschaut, also die Dateien kopiert und in Eric laufen lassen. In dem Teil -seewhatsonair- wird ja die GUI "texttechnisch" erzeugt. Also bilden mehrere *.py das Programm, wovon eine eben die GUI darstellt -o.k.. Was ist das in dem seewhatsonair.py:

Code: Alles auswählen

picklefile = 'seewhatsonair.pickle'
Noch 'ne Frage an BlackJack: Mittel Qt kann ich ja die *.ui gebären ->
kann dort für Ereignisse, wie zum Beispiel einen Mausklick auf einen Button, den Namen einer Handlerfunktion angeben. Irgendwie wird man diese Datei mit einem Python-Programm verbinden können
gibts für genau diesen Vorgang, diese Technologie eine Anleitung event. so gar noch auf deutsch?
Aber auf alle Fälle werde ich erst mal direkt in's scriptische Python (Konsole) reinschauen, um überhaut etwas zu lernen.

Danke für eure Hilfe - Gruß Alf
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Ich glaube Leonidas sagt hier etwas zu kategorisch Nein. Ich habe `Eric` auch noch nicht wirklich benutzt, aber mal kurz reingeschaut. Die IDE bindet den Qt-Designer ein, mit dem man Qt-Oberflächen zusammenklicken und in sprachneutralen Dateien (*.ui) speichern kann. Man kann dort für Ereignisse, wie zum Beispiel einen Mausklick auf einen Button, den Namen einer Handlerfunktion angeben. Irgendwie wird man diese Datei mit einem Python-Programm verbinden können, wo dann eine entsprechende Funktion bereitsteht, die aufgerufen wird, wenn der Button angeklickt wird.
Klar, dass das geht. Aber in VB ist sowas eben besser integriert. In VB hast du ein Widget, klickst dieses an, es wird automatisch der Rumpf einer Handler-Funktion gebaut (etwa ``btnOne_click`` oder so ähnlich) und der Cursor reingesetzt - ready to write. Kommt natürlich zu einem Preis: ich habe nie rausgefunden wie oder ob man die Funktionen umbennenen kann oder wie man mehrere Widgets an die gleiche Handler-Funktion bindet.

Achja, das picklefile ist einfach die Datei in die die Einstellungen gespiechert werden. Dies wird mit dem Modul ``pickle`` gemacht, daher heißt die Variable auch so - es ist einfach ein Dateiname.

Was das verbinden von Handler mit UI-Datei angeht: in PyGTK ist das ein Befehl. In der GLADE-Datei werden die Handler definiert und im Python-Quelltext eine Funktion aufgerufen, die ein Dictionary mitbekommt, welches die Zuordnung Handler-Name<->Funktion vornimmt. Dummerweise finde ich im Moment kein Beispiel.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:Dummerweise finde ich im Moment kein Beispiel.
Wie wärs damit? http://www.learningpython.com/2006/05/3 ... and-glade/

Dürfte so in Richtung des gesuchten gehen. Aber ist eben GTK und kein QT. ;)
Antworten