Erste, gleich ganz blöde, Frage...

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
cougartrader
User
Beiträge: 11
Registriert: Sonntag 11. August 2013, 15:12

Hallo

ich bin neu hier und auch in der Welt des Programmierens und völlig ahnungslos. Kurz zu meiner Person, ich bin Anfang der 60er Jahre geboren und damit
nicht mehr so ganz taufrisch (Lernprozesse dauern...). Ich bin grad von Windows auf Linux (größtenteils) umgestiegen und handle nebenbei an der Börse Derivate, allerdings nur für mich,
also kein richtiger Händler o.ä.

Unter Linux gibt es das ein oder andere (noch) nicht, was ich gern hätte und da hab ich mir gedacht, beschäftige dich doch in deiner Freizeit
mal damit, etwas selbst zu schreiben. Ich hab mir in einer Tabellenkalkulation ein paar Sachen erstellt, nach denen ich u.a. den Handel betreibe.
Das sind äußerst simple Sachen, aber sie funktionieren und davon würde ich gern etwas umsetzen. Das hat mit euren Profiansätzen hier eigentlich nur wenig zu tun...

Zu Python hat mir ein entfernter Verwandter geraten, einfach aber wirkungsvoll, läuft unter Linux, Windows und Mac etc., aber der macht sowas
auch Beruflich, was bedeutet da schon einfach...

Mein erstes kleines Progrämmchen unter Linux mit IDLE + Python 3.2 ist ein Pivot-Rechner, so etwa wie dieser hier:

http://www.bullchart.de/rechner/index.php

Einfach Open/High/Low/Close eintippen und die Pivotpunkte werden berechnet. Das war zum üben, soll aber noch erweitert/verändert werden,
außerdem könnte ich wohl auch noch 1-2 Zeilen zusammenfassen usw.

Code: Alles auswählen

number1=float(input("Eingabe Open:  "))
number2=float(input("Eingabe High:  "))
number3=float(input("Eingabe Low:   "))
number4=float(input("Eingabe Close: "))
total1 = number2 + number3 + number4    #Klassische Berechnung f. Pivotpunkt
Pivotpunkt = total1 / 3                 #Berechnung Pivotpunkt
R1 = 2*Pivotpunkt-number3               #Berechnung R1
R2 = Pivotpunkt+(number2-number3)
R3 = 2*(Pivotpunkt-number3)+number2
S1 = (2*Pivotpunkt)-number2
S2 = Pivotpunkt-(number2-number3)
S3 = number3-(2*(number2-Pivotpunkt))


print ("Pivot:  ",int (Pivotpunkt))   #Ausgabe Pivotpunkt UND Wert in einer Zeile, 
print ("R1:     ",int (R1))           #int bewirkt KEINE Kommastellen
print ("R2:     ",int (R2))
print ("R3:     ",int (R3))
print ("S1:     ",int (S1))
print ("S2:     ",int (S2))
print ("S3:     ",int (S3))
Jetzt endlich zu meiner Frage, das ist ja ganz nett, nützt aber doch nur mir etwas, oder? Wenn ich es weitergeben möchte, müsste das
ganze doch mit einer GUI laufen, für Windows als .exe und für Linux... weiss ich noch nicht, aber auch als eigenständige ausführbare Datei?
Ich lese zwar viel und beisse mich durch das ein oder andere Tutorial, aber da hab ich noch nicht viel gefunden...

Nächste Frage, sofern ich das mal für meine Bedürfnisse auf die Reihe bekommen sollte, würden die Programme etwas umfangreicher werden
incl. Datenbankanbindung etc., aber es würde auch immer eine GUI dafür benötigt (z.B. monatl. Arbeitsstunden berechnen), da wäre doch,
nachdem was ich bisher gelesen habe, PyQt(4) mit dem Designer besser bzw. einfacher als Tkinter? Literatur/Howto's sollte für beides zu finden sein...

Ich würde mich über eine Antwort auf diese "Luschenfragen" sehr freuen!

Viele Grüße
Holger
Zuletzt geändert von Anonymous am Montag 12. August 2013, 10:59, insgesamt 1-mal geändert.
Grund: Queltext in Python-Code-Tags gesetzt.
BlackJack

@cougartrader: Also zumindest für Linux würde ich einfach den Quelltext liefern und eine Beschreibung der Abhängigkeiten. Eventuell noch eine ``setup.py`` und alles vorbereitet, damit man es mit ``pip`` oder eventuell auch noch ``easy_install`` installieren kann. Einen Python-Interpreter hat so ziemlich jedes Linux-System nämlich schon installiert, beziehungsweise lässt sich das leicht über die Paketverwaltung der jeweiligen Distribution nachholen. In dem Zusammenhang eine kleine Anmerkung zur Python-Version: Bei den meisten aktuellen Distributionen ist Python 2.7 das Standard-Python. Ich persönlich finde Python 3.x noch nicht für den produktiven Einsatz brauchbar, weil es teilweise mehr Aufwand macht Bibliotheken zu installieren, die noch nicht als Pakete der Linux-Distribution vorliegen. Teilweise existieren für Bibliotheken für Python 2.x noch keine Portierungen oder Alternativen für Python 3.x.

Bei Windows müsste man wohl alles, also Anwendung und Python-Interpreter, und verwendete Bibliotheken zu einem Installer zusammenschnüren, wenn man Windowsanwender nicht überfordern möchte. Eine EXE muss das nicht zwingend werden, es reicht ja wenn der Benutzer am Ende ein Icon oder einen Menüeintrag hat, worauf er klicken kann.

PyQt ist sicher ein moderneres GUI-Toolkit als Tkinter. Es bietet mehr Widgets als Tkinter und setzt modernere Konzepte um. Als Nachteile sehe ich nur das es eine zusätzliche Abhängigkeit ist, also bei Systemen wo das nicht sowieso schon installiert ist, muss es zusätzlich installiert werden. Das betrifft hauptsächlich Linux mit einem Desktop auf Gtk-Basis und Windows natürlich. Und die Lizenzfrage: Entweder man hat kein Problem mit der GPL, oder man muss Geld bezahlen. Das betrifft übrigens nur die PyQt-Anbindung und nicht Qt selbst, denn Qt steht unter der LGPL.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Es ist nicht zwingend notwendig eine GUI zu programmieren. Und auch, wenn du eine GUI programmierst, braucht man immer noch den Python-Interpreter um diese auszuführen.
Um das fertige Programm ohne Interpreter auszuführen, musst du es in eine .exe umwandeln. Bis jetzt habe ich nur mit py2exe gearbeitet, doch bin vor einiger Zeit auf den pyinstaller (http://www.pyinstaller.org/) gestoßen. Nach Beschreibung sollte man damit auch standalone executables erzeugen können.

Tkinter ist meiner Meinung nach nicht für Projekte ab einer bestimmten Größe geeignet. Ich selber benutze wxPython, hab aber auch schon mit dem PyQt Desginer gearbeitet. Rein Qualitativ würde ich zu PyQt raten, kann zur Lizenz keine Aussage treffen und weiß auch nicht wie stark Verletzungen verfolgt werden.

Ich kann nachvollziehen, dass man seinen funktionierenden Code direkt mit der Welt teilen möchte und am besten in Form einer GUI, aber dennoch rate dir, erst einmal tiefer in die Analen der Programmierung zu treten.
Vor allem, wenn es um größere Programme geht, wird es mit der GUI etwas tricky und erfordert viel Theorie.

PS:
Dein Code sieht gut strukturiert und sauber aus :)
cougartrader
User
Beiträge: 11
Registriert: Sonntag 11. August 2013, 15:12

Hallo,

habt vielen Dank für den netten Empfang und die Tipps, ich werde sie beherzigen. Auch der Hinweis zu Python 2.7, das hat mein Ubuntu eh an Bord,
das 3.2 hatte ich mir zusätzlich geladen. Allerdings hab ich auch festgestellt, dass viel Literatur zu 2.7 existiert, zu 3.x geht es erst los, allerdings
sollen die Unterschiede an sich nicht groß sein, z.B. print und die Klammern usw... die Bibliothekenfrage spricht aber wohl wirklich für 2.7...

Ich hab beides auf dem Rechner und da ich nach wie vor unter einem gewissen Spieltrieb leide, hab ich IDLE und Eric. Die Anbindung von Eric an QT
gefällt mir evtl. besser als von IDLE aus... irgendwann werd ich mich entscheiden (müssen?). Auf jeden Fall hab ich mir Qt/PyQt installiert und
mal reingeschaut.

Aus dem Alter, wo man neue Erungenschaften mit anderen teilen muss, bin ich raus, irgendwann merkt man, dass fast alle immer nur haben wollen ohne etwas zurück zu geben.
Zur Lizenfrage, ich denke nicht, dass ich da ein Problem mit habe ;) Auf jeden Fall hab ich viel zu lesen in nächster Zeit!

Viele Grüße
Holger
cougartrader
User
Beiträge: 11
Registriert: Sonntag 11. August 2013, 15:12

Hallo,

sooo, ich bin etwas weiter, nebenbei beginne ich mir ein eigenes Tutorial mit Stichworten, Links und Befehlen zu erstellen, wenn man mal etwas
im Web sucht und auch findet, dann fragt man sich später, wo war das noch, mit einem Bookmark findet man es wieder, muss aber dennoch zu lange suchen
um genau die Stelle zu finden, mal sehen, ob es wirklich hilfreich wird ;)

Python 3.2 hab ich erstmal links liegen gelassen und wurschtel ein wenig mit 2.7 und ERIC herum und lerne jeden Tag etwas. Auch hab ich mir QT4.8.1 mit dem Designer
installiert.
Dort hab ich mir eine Oberfläche für den Pivotrechner (s.o.) gebastelt und kann die Datei/GUI in ERIC einbinden mit hilfe des scriptes von hier:

http://openbook.galileocomputing.de/pyt ... efdab7d505

Meine Frage ist nun, da ich noch nichts dolles gefunden hab, gibt es Literatur darüber, wie es dann weitergeht? Also z.B. Widgets, die mit QT erstellt wurden,
in ERIC oder IDLE oder einem anderen Editor funktionen zuweisen, Berechnungen in entsprechenden Widgets auszugeben etc.?

Es wird viel darüber geschrieben, wie man in einem Editor eine GUI schreibt und das meist für TkInter, z.B. auch in ISBN: 978-3836217385 "Einstieg in Python".
Nur sehe ich da mehr Sinn drin, wenn es ein Tool wie den QT-Designer gibt, zumindest so einen Kleinkram wie meinen Rechner darüber zu erstellen als eine GUI
selbst zu programieren, für umfangreichere Sachen mag es anders sein, das weiss ich nicht...

Wie gesagt, gibt es empfehlenswerte Literatur 1. zu QT4 incl. dem Designer und 2. etwas dazu, wie man das ganze danach einbindet?

LG
Holger
BlackJack

@cougartrader: Vom Ansatz in dem Buch aus der `*.ui`-Datei Python-Quelltext zu generieren würde ich absehen. Das ist ein unnötier Zwischenschritt, weil man die Datendatei auch mit der `loadUi()`-Funktion aus dem `PyQt4.uic`-Modul direkt zur Laufzeit in Widget-Objekte umwandeln kann.

Im Zusammenhang mit `PyQt4` ist die Dokumentation dafür zu erwähnen: http://pyqt.sourceforge.net/Docs/PyQt4/

Und generell ist die Qt-Dokumentation lesenswert. Auch wenn die eigentlich für C++ geschrieben ist, werden die Zusammenhänge und Konzepte gut und ausführlich erklärt. Die PyQt-Dokumentation ist da so ein bisschen als „Add-On” zu sehen wo hauptsächlich die Unterschiede und Besonderheiten im Zusammenhang mit Python erklärt werden. Also wie die Qt-API auf die PyQt-API abgebildet wurde.
cougartrader
User
Beiträge: 11
Registriert: Sonntag 11. August 2013, 15:12

Hallo,

sorry für die späte Antwort... Danke für die Hinweise, das mit der `loadUi()`-Funktion werde ich mal testen und mir die
Dokumentation zu PyQt4 ansehen bzw. reinsehen.

Viele Grüße
Holger
Antworten