Neu hier und etwas verwirrt

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
Nordpol
User
Beiträge: 19
Registriert: Sonntag 19. September 2010, 18:21

Hallo Forum,

ich bin ganz neu hier und auvch ganz neu in Sachen Python unterwegs. Es ging mir eigentlich nur darum, eine Scriptsprache zu finden,mit der ich auch mal eine GUI machen kann und bei der ich das Programm dann als .exe (im Windowsfall) weitergeben kann.

Allerdings verwirren mich die verschiedenen GUI-Toolkits.

Meine Anwendungen werden vor allem auf mysql-Datenbanken zugreifen und dort Daten eintragen, auslesen und/oder anschließend verwerten. Hierzu brauche ich neben meinen php-frontends z.B. ein Windows-Frontend, das Formulare im Eingabebereich generiert, im Verarbeitungsbereich db-Einträge vornimmt und Ausgaben per Tabellen darstellt.

Bin ich da mit Python richtig?

Und welches GUI-Toolkit ist da das richtige für mich?

Bis hierher erstmal Grüße,

Nordpol
BlackJack

@Nordpol: Das hängt von Deinen Bedürfnissen ab. Im Grunde sind die grossen drei -- Qt, Gtk, und wxWidgets -- geeignet. Bei Qt müsstest Du abklären, ob die Lizenz von der Python-Anbindung für Dich in Ordnung ist, und Gtk soll wohl unter Windows nicht so einfach zu installieren sein, bzw. müsstest Du da wahrscheinlich etwas Arbeit reinstecken beim Schnüren des Pakets/Installers. Bei wxWidgets haben hier im Forum ein paar Leute Vorbehalte gegen die Qualität des Quelltextes und der Professionalität des Projekts. wxWidgets wäre aber wohl mein Favorit wenn es auf Windows laufen soll und die GPL als Lizenz nicht in Frage kommt.
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Hallo Nordpol,

mit Python bist du (fast) immer richtig. Du kannst damit natürlich auch auf Mysql Datenbanken zugreifen. Auch das script in einen EXEcontainer zu verpacken ist kein Problem.
Was genau an den GUIs verwirrt dich?
Wenn Du mit Tabellen arbeiten willst ist Tk vielleicht weniger geeignet.
Unter Windows würde ich Qt oder wx nehmen. Die Designer (Qt Designer oder wxglade) sind auch ganz ansprechend.

Gruß
alpha
lunar

@BlackJack: Mit PySide hat sich das Lizenzproblem bei Qt nun erledigt. Es unterliegt der LGPL, und ist mittlerweile durchaus gereift. Dem äußeren Anschein nach ist es mittlerweile wohl produktiv verwendbar, zumindest für kleinere Projekte. Es gibt mittlerweile auch Binärdateien für Windows zum Download. Insofern ist Qt vielleicht die bessere Wahl als wx, denn die Qualität der darunter liegenden Bibliothek ist bei Qt in jedem Fall wesentlich höher.

Im Übrigen erlaubt PyQt neben der GPL noch verschiedene andere freie Lizenzen, nur proprietäre Entwicklung ist mit PyQt nicht ohne kommerzielle Lizenz möglich.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Bevor ich mich entscheiden würde, würde ich mir alle drei GUIs ein wenig ansehen. Qt sieht optisch gut aus, pygtk ist recht flexibel, obwohl der Einarbeitungsaufwand vielleicht ein wenig höher ist und wxPython, da hast du Programme, die auf jeder Plattform nativ aussehen.
lunar

@Francesco: Naja, natives Aussehen ist nun wirklich kein Alleinstellungsmerkmal von wxWidgets mehr (wenn es das überhaupt je war). Mittlerweile nutzen auch Qt und Gtk unter Windows und Mac OS X native Steuerelemente. Alle drei Toolkits sehen daher mehr oder weniger „nativ“ aus. Insofern ist „optisch gut“ auch kein sonderlich sinnvolles Kriterium, schließlich sehen alle drei Toolkits unter Windows – woran der OP ja hauptsächlich interessiert ist – und Mac OS X mehr oder weniger identisch, eben „nativ“ aus. Und unter Linux/Unix wird das Aussehen sowieso durch den vom Benutzer gewählten Oberflächenstil bestimmt, man kann problemlos Qt wie Gtk und Gtk wie Qt aussehen lassen.

„Flexibilität“ ist irgendwo auch recht schwammig. Was genau macht Gtk denn nun „flexibler“ als wx oder Qt?
Nordpol
User
Beiträge: 19
Registriert: Sonntag 19. September 2010, 18:21

Hallo,

erstmal danke für die Antworten bis hierher. Ich glaube, bei der Wahl des GUI-Toolkit muss ich mir ein wenig mehr Zeit nehmen. Aber hierbei entscheidend ist auch, wie viele andere User dasselbe Toolkit nutzen, damit ich mich hierüber und über eventuell auftretende Probleme gut austauschen kann.

Habt Ihr ggf. da Angaben, wir (z.b. hier im Forum) die Anteile des Gebrauchs der Toolkit über die User verteilt sind?

Ansonsten wäre für mich vermutlich QT den ersten Hingucker wert, aber ich mag diesen Lizenzdschungel nicht. Insofern werde ich wohl mal in Richtung WX schauen.

2. Thema: Wenn ich eine Anwendung inkl. Interpreter, also als .exe (im Windowsfall) weitergebe, ist dann auch mein Quelltext verschlüsselt oder kann der eher leicht "zurückengineert" werden?

3. Thema: Was Python selber angeht, bin ich ja auch Komplett-Anfänger. Deshalb möchte ich gerne von Eueren Erfahrungen profitieren.

Wie fange ich am sinnvollsten an?
Vielleicht erstmal Theorie lernen? (Umgang mit Dateien, Schleifen, If-Anweisungen, Arrays, usw. )
Erstmal Konsolenanwendungen oder gleich GUIs programmieren?

Mein Hintergrund: Ich habe vor 10 Jahren ca. 2 Jahre in Perl programmiert und bin danach auf php/mysql umgestiegen. In Sachen objektorientierter Programmierung tue ich mich aber immer noch schwer, was mir nicht nur in php auffällt, sondern mir auch immer wieder den Zugang zu javascript erschwert, obwohl ich damit immer wieder arbeite (arbeiten muss).

Bis hierher erstmal wieder danke fürs Zulesen und Eure Tips im Voraus

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

Nordpol hat geschrieben: Ansonsten wäre für mich vermutlich QT den ersten Hingucker wert, aber ich mag diesen Lizenzdschungel nicht.
Kapiere ich nicht? Was für eine Lizenz willst Du denn nehmen für Dein Projekt?
Nordpol hat geschrieben: 2. Thema: Wenn ich eine Anwendung inkl. Interpreter, also als .exe (im Windowsfall) weitergebe, ist dann auch mein Quelltext verschlüsselt oder kann der eher leicht "zurückengineert" werden?
Wie bei allen Sprachen: Kann leicht disassembliert werden!
Nordpol hat geschrieben: Erstmal Konsolenanwendungen oder gleich GUIs programmieren?
Def. erst einmal Finger weg von GUIs. Ist zumindest meine Meinung :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Nordpol
User
Beiträge: 19
Registriert: Sonntag 19. September 2010, 18:21

Hyperion hat geschrieben: Wie bei allen Sprachen: Kann leicht disassembliert werden!
Oh. Na aber dann wäre doch eine update_my_db.exe, die ich weitergebe, eine glatte Einladung dazu, auf meinem Datenbankserver zu machen was grad Lust und Laune macht, oder?

Denn irgendwo müssen ja die Zugangsdaten in der weitergegebenen Datei enthalten sein.

Gruß, Nordpol
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wie werden denn die Zugangsdaten übermittelt? Verschlüsselt?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Nordpol hat geschrieben:Oh. Na aber dann wäre doch eine update_my_db.exe, die ich weitergebe, eine glatte Einladung dazu, auf meinem Datenbankserver zu machen was grad Lust und Laune macht, oder?
Theoretisch ja.
Nordpol hat geschrieben: Denn irgendwo müssen ja die Zugangsdaten in der weitergegebenen Datei enthalten sein.
Naja, oder eben per User-Eingabe. Woher dieser die dann bezieht, ist dann eben Applikations abhängig. Man sollte halt nur nicht arglos einen Admin-Account nach draußen geben :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Nordpol
User
Beiträge: 19
Registriert: Sonntag 19. September 2010, 18:21

@Jens: Na noch gar nicht. Ich bin doch Einsteiger und habs noch gar nicht programmiert. :wink:
Hyperion hat geschrieben: Theoretisch ja.
Gut zu wissen.
Hyperion hat geschrieben: Naja, oder eben per User-Eingabe. Woher dieser die dann bezieht, ist dann eben Applikations abhängig. Man sollte halt nur nicht arglos einen Admin-Account nach draußen geben :-D
Ok, dann muss es eben in Verbindung Client/Server zu einer Lösung führen. Das Clientscript meldet sich beim Serverscript an und ab dort laufen dann nur noch kontrollierte Vorgänge ab (bei entsprechender Berechtigung natürlich).

Heißt aber auch, dass ich nie direkt mit dem sql-server kommunizieren kann, wenn ich nicht auch freiwillig einen sql-User-Account an den Bediener des rausgegebenen Frontends rausrücken würde?

Ach so, ich gehe übrigens die ganze Zeit von der Annahme aus, dass der sql-server als Webdienst läuft und sich dort auch Daten befinden, die der Frontenduser nicht einsehen soll.

Gruß, Nordpol
lunar

@Nordpol: Natürlich kann man nur auf den Datenbankserver zugreifen, wenn man ein Benutzerkonto zum Zugriff kennt. Was hast Du denn erwartet?! Das der Server irgendwie magisch weiß, wer da gerade das Programm bedient? Das klappt, nur deswegen gibt es ja überhaupt Benutzerkonten und Passwörter ...

Um Zugriff auf die Datenbank bereitzustellen, hast Du prinzipiell verschiedene Möglichkeiten. Egal, was Du wählst, wichtig ist letztlich vor allem, dass Du jedem potentiellen Nutzer des Programms ein eigenes Zugriffskonto gibst. Dessen Daten kann der Benutzer dann in die Applikation eintragen, und somit individuell auf die Datenbank zugreifen. Damit kannst Du nachvollziehen, wer man was gemacht hat, und ggf. einzelne Berechtigungen zurückrufen.
BlackJack

@Nordpol: Das es kein allgemein "empfohlenes" GUI-Toolkit gibt, liegt auch mit daran, dass Gtk, Qt, und wxWidgets alle verwendet werden. Es gibt da keinen klaren "Sieger". Wenn Du nicht "vorbelastet" bist und mit einem der Toolkits schon in einer anderen Programmiersprache gearbeitet hast, dann wäre wohl wirklich das Beste, Du schaust Dir die Kandidaten mal selbst an und versuchst ein kleines Projekt damit umzusetzen. Wobei Du dabei auch bis zum Packaging zu einer EXE oder einem Installer unter Windows mit allen Abhängigkeiten gehen solltest, um zu sehen wie das jeweils funktioniert.

Zum "reverse engineering": Wenn Du irgendwo Benutzernamen und Passwort im Code stehen hast, dann ist es völlig egal wieviel Aufwand Du betreibst das zu verschleiern, denn irgendwann muss das ja mal an den Server übermittelt werden, und da kann man es dann mit Wireshark oder ähnlichen Programmen abgreifen. Völlig unabhängig von der Programmiersprache in der das Programm geschrieben wurde. Verschlüsseln vom Code würde auch nichts nützen denn zum Ausführen muss er ja in entschlüsselter Form vorliegen, also muss man auch den Schlüssel zum entschlüsseln mitliefern. Da kann man auch gleich den entschlüsselten Code ausliefern.

Ein Benutzer sollte selbst mit dem kompletten Quelltext Deiner Anwendung nichts mit der Datenbank machen können dürfen, was Du nicht möchtest. Alles andere ist "security by obscurity" und funktioniert nicht zuverlässig.

Python-Anfänger: Das Tutorial in der Dokumentation sollte man mal durchgearbeitet haben. Erst Konsolenanwendungen bzw. GUI-Programmierung erst dann, wenn man Objektorientierung drauf hat. Normalerweise kommt für viele mit GUI-Programmierung die ereignis-basierte Programmierung als Neuland hinzu, aber das sollte von JavaScript im Browser schon bekannt sein.

OOP bei JavaScript ist ja immer die Frage welches Modell verwendet wird. Da gibt's ja nicht *die* Herangehensweise, sondern zig "Rezepte" um "prototypische", "klassische", oder "funktionale" Vererbung umzusetzen. Da hat man es in Python einfacher.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

lunar hat geschrieben:
„Flexibilität“ ist irgendwo auch recht schwammig. Was genau macht Gtk denn nun „flexibler“ als wx oder Qt?
Das habe ich selbst vor ein paar Wochen gefragt:
http://www.python-forum.de/viewtopic.php?f=1&t=24022, Pekh BeitragVerfasst: Fr Sep 03, 2010 14:14
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Francesco hat geschrieben:Das habe ich selbst vor ein paar Wochen gefragt:
http://www.python-forum.de/viewtopic.php?f=1&t=24022, Pekh BeitragVerfasst: Fr Sep 03, 2010 14:14
Man kann auch direkt auf den Beitrag linken.

Und von GTK+ würde ich absehen wenn das Programm auf Windows laufen soll. Ich nutze GTK+ eigentlich ganz gerne weil mir Windows egal ist und es unter Linux ziemlich gut integriert ist. Bleiben also noch wx und Qt - da würde ich wohl auch auf Qt setzen, ob nun über PySide oder PyQt. Irgendwie wirkt Qt auf mich durchdachter, stabiler und die Existenz eines offiziellen GUI-Designers ist ein ziemlicher Vorteil (persönlich finde ich wxGlade fürchterlich und die XRC-Unterstützung von wx mau). Zudem ist es dokumentiert und es gibt regelmäßig Releases, deren Versionsnummer sich nicht nur in der 5 Stelle nach dem Komma ändert, sondern wo auch wirklich neue nützliche Features dazukommen.

Also gerade wenn ich proprietäre GUIs schreiben würde, wäre sogar ne PyQt-Lizenz zu überlegen, falls PySide nicht reicht. Aber noch lieber würd ich frei lizensierte Software nutzen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten