Selbst erstellte GUI's?

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
akske
User
Beiträge: 3
Registriert: Donnerstag 25. Juni 2009, 01:31

Hallo,
Als erstes muss ich sagen dass der Einstieg in Python (ich arbeite erst seit 2 Tagen damit) für mich der erste Schritt in irgendeiner Programmiersprache ist und ich dementsprechend ziemlich vor dem nichts stehe.

Ich habe nun schon einige leichte Funktionen kennengelernt und würde mich nun gerne informieren wie ein "professionelles" Programm aufgebaut ist.

Was ich damit meine:
Wenn ich ein Programm wie beispielsweise Winrar habe, so bietet dieses mir eine eigene Gui, sogar mit Grafiken.
Ist soetwas auch unter python möglich?

Desweiteren würde ich mich sehr freuen wenn man mir ein (möglichst deutsches) Anfängertutorial empfehlen könnte, das galileo-Openbook sheint ja recht verpönt zu sein.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Vorweg: Ein "professionelles" Programm braucht nicht unbedingt ein GUI.

Was du vorhast ist mit allen Toolkits möglich. Aber an die solltest du dich erst ranwagen, wenn du Python verstanden hast, denn sonst wirft man die Konzepte schnell durcheinander.


http://docs.python.org/index.html
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

Was ich damit meine:
Wenn ich ein Programm wie beispielsweise Winrar habe, so bietet dieses mir eine eigene Gui, sogar mit Grafiken.
Ist soetwas auch unter python möglich?
Natürlich!!!
Diese Seite könnte Ich dir für GUI Anfänger empfehlen:
http://www.wspiegel.de/tkinter/tkinter_index.htm
Und wenn du mir nicht glauben willst:

Code: Alles auswählen

from Tkinter import *
def co():
 print "hallo akske"
root = Tk()
but = Button(root,text="drück",command=co)
but.pack()
root.mainloop()
Hab den Code nicht getestet! :D
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dennoch ist es keine gute Idee, sich damit am Anfang zu befassen! Man stellt das Sichtbare dann über die Datenstrukturen und frickelt sich irgend was zusammen ... so lernt man auf Dauer nichts bzw. kommt nichts komplexeres wirklich gebacken.

Muss ich hier ne Highscore-Liste explizit erwähnen? :-P
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das ist mit Qt4 nicht sonderlich schwerer.

Code: Alles auswählen

from PyQt4.QtGui import QApplication, QPushButton
from PyQt4.QtCore import SIGNAL
app = QApplication([])
button = QPushButton(u'Push')
def greet(): print u'Hallo akske'
button.connect(button, SIGNAL('clicked()'), greet)
button.show()
app.exec_()
Bei anderen Toolkits sieht der Code auch nicht viel anders aus.

Interessant ist es zu sehen wie der Code bei größeren Anwendungen aussieht, welche Widgets das Toolkit bietet und wie mächtig diese sind, wie die GUI aussieht(nativ?), ob es möglich ist die GUI "zusammen zu klicken" und letztendlich wie portabel es ist. Tkinter kann da einfach nicht mithalten.
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

Hallo akske,

Ich finde das galileo-Openbook für Anfänger gar nicht schlecht. Die Autoren erklären zumindest vieles in allgemeinverständlicher Sprache. Ich habe noch kein vergleichbares gesehen nur einige viel schlechtere und vor allem konzeptlosere.

Das Tutorium von Van Rossum ist auch nicht schlecht:

http://starship.python.net/crew/gherman ... nline/tut/

Wenn du die Grundlagen einigermaßen drauf hast, würde ich mit Tkinter weitermachen. Damit kannst du grundlegende Oberflächen gestalten.
Tkinter ist sowieso schon Bestandteil des Pythons, das du auf deinem Rechner installiert hast. Mehr brauchst dur für den Anfang wirklich nicht.

Zum Programmaufbau (zumindest baue ich so auf):
1. (also oben) alle import Anweisungen, z.B. from Tkinter import *
2. globale Vaiablen (soweit du welche benötigst)
3. Funktionen, also: def meine_erste_funktion():
4. Dann die grafische Oberfläche mit root... (labels, buttons usw.)

Wenn du dann noch eine gute Programmidee hast, die deine Motivation wach hält, wirst du sehr schnell voran kommen.

Ich wünsche dir frohes lernen und viel Spaß und Erfolg!
py-mule
TiKaey
User
Beiträge: 84
Registriert: Montag 24. November 2008, 20:48

A Byte Of Python fand ich für den Anfang nicht schlecht.
Ist auch in Deutsch.
http://abop-german.berlios.de/

Welches Toolkit du nun für die GUI nimmst... guck dir am besten mal alle an, wie sie aussehen. :o)
Willst du sie zusammen klicken oder per Code?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

py-mule hat geschrieben:Zum Programmaufbau (zumindest baue ich so auf):
1. (also oben) alle import Anweisungen, z.B. from Tkinter import *
2. globale Vaiablen (soweit du welche benötigst)
3. Funktionen, also: def meine_erste_funktion():
4. Dann die grafische Oberfläche mit root... (labels, buttons usw.)
Sorry, aber das ist eine Ansammlung schlechter Tipps und eher die Beschreibung wie man es nicht machen sollte. Vielleicht erklärt es auch, warum du das Openbook magst. :?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

py-mule hat geschrieben:Das Tutorium von Van Rossum ist auch nicht schlecht:

http://starship.python.net/crew/gherman ... nline/tut/
Das ist 10 Jahre alt und deshalb alles andere als empfehlenswert.
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

Leonidas hat geschrieben:
py-mule hat geschrieben:Zum Programmaufbau (zumindest baue ich so auf):
1. (also oben) alle import Anweisungen, z.B. from Tkinter import *
2. globale Vaiablen (soweit du welche benötigst)
3. Funktionen, also: def meine_erste_funktion():
4. Dann die grafische Oberfläche mit root... (labels, buttons usw.)
Sorry, aber das ist eine Ansammlung schlechter Tipps und eher die Beschreibung wie man es nicht machen sollte. Vielleicht erklärt es auch, warum du das Openbook magst. :?
Ok. Hab ich so in den 90ern in C gelernt. Ist wahrscheinlich wirklich nicht besonders...

War auch nur ein Versuch zu helfen und andere dazu zu bewegen, vielleicht auch mal einen Kommentar dazu abzugeben, was ja auch passiert ist. Schön fände ich es allerdings, wenn dann auch Verbesserungsvorschläge kämen, vielleicht in der Form:

"hey, py-mule, is ja ganz nett, hat mein Uroma 1899 so gemacht, aber heute ist es besser, wenn du es so und so (Verbesserungsvorschlag) angehst."

Dann hat auch derjenige, der sich hilfesuchend an die Forumsgemeine gewendet hat etwas davon.

@Leonidas: also wie geht das, wie ist ein "professionelles Progamm" aufgebaut?

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

py-mule hat geschrieben:@Leonidas: also wie geht das, wie ist ein "professionelles Progamm" aufgebaut?
Keine Stern-Importe sondern Namen oder Module explizit importieren, dann insbesondere in GUIs die Fenster in Klassen mit Zuständigkeiten Kapseln (ggf auch MVC verwenden), keine globalen Variablen (höchstens globale Konstanten, die aber nie (!) modifiziert werden), die Funktionen die die Fensterinhalte verarbeiten in ihre GUI-Klassen stecken.

Oftmals sinnvoll ist es, die GUI in externen Dateien zu hinterlegen wie es bei moderenen Toolkits wie GTK+ (Glade, GtkBuilder), Qt (Ui) oder wxWidgets (XRC) üblich ist, so spart man sich den lästigen GUI-Code und kann die GUIs einfach und effizient mit einem richtigen GUI-Designer bauen und verändern.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

akske hat geschrieben:ich arbeite erst seit 2 Tagen damit
Hallo akske!

- In deinem eigenen Interesse: Lerne zuerst Python, bevor du dich mit der GUI-Programmierung befasst.

- Vermeide Sternchenimporte! Vermeide Sternchenimporte! Vermeide Sternchenimporte! Vermeide Sternchenimporte! Vermeide Sternchenimporte! ;-)

- Vermeide Bücher, die hier im Forum von den Profis als "schlecht" abgestempelt werden.

- Tkinter ist zwar bei Python mit dabei, aber es ist, meiner Meinung nach, für GUIs vielleicht nicht gerade die erste Wahl. Die Wahl des GUI-Toolkits hängt von mehreren Faktoren ab. Das ist aber erst dann ein Thema für dich, wenn du dich in Python eingelesen hast.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
akske
User
Beiträge: 3
Registriert: Donnerstag 25. Juni 2009, 01:31

Vielen Dank für die bisherigen Tips.

Ich werde Sternchenimporte vermeiden, auch wenn ich noch nicht den Unterschied zwischen dieser Art und "richtigen" Importen kenne :D

Die GUI Sache hat mich hauptsächlich interessiert weil ich gelesen habe es sei möglich mit Python Webanwendungen zu schreiben und eine Webanwendung ohne grafische Oberfläche findet beim Durchschnittlichen Nutzer wohl nur wenig Anklang.

Momentan bin ich beim Kapitel Funktionen angekommen und da das mir noc sehr rätselhaft ist lasse ich sowieso ersteinmal die Finger von komplizierteren Dingen :)
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

akske hat geschrieben:Die GUI Sache hat mich hauptsächlich interessiert weil ich gelesen habe es sei möglich mit Python Webanwendungen zu schreiben und eine Webanwendung ohne grafische Oberfläche findet beim Durchschnittlichen Nutzer wohl nur wenig Anklang.
Da hast du vollkomen Recht: eine Webanwendung ohne grafische Oberfläche ist wahrlich nicht das gelbe vom Ei. Aber bevor du mit dem Thema "graphische Oberflächen in Webanwendungen" beginnst, solltest du dich mit Funktionen vertraut machen.
problembär

akske hat geschrieben:Die GUI Sache hat mich hauptsächlich interessiert weil ich gelesen habe es sei möglich mit Python Webanwendungen zu schreiben und eine Webanwendung ohne grafische Oberfläche findet beim Durchschnittlichen Nutzer wohl nur wenig Anklang.
Webanwendungen laufen wohl eher im Browser. Die "GUI"s da sind in html, JavaScript oder Java geschrieben.
Python kommt da eher auf Servern zum Einsatz, das heißt, der Benutzer gibt Daten typischerweise in ein html/JavaScript-Webformular ein, die Daten werden online zu einem Server geschickt, dort führt ein grafikloses Python-Skript Berechnungen durch und schickt das Ergebnis zurück an den Browser des Benutzers. Python-GUIs braucht man DAFÜR nicht. Schon eher, wenn man einen Browser oder einen Email-Client in Python schreiben will.

Gruß
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

akske hat geschrieben:Ich werde Sternchenimporte vermeiden, auch wenn ich noch nicht den Unterschied zwischen dieser Art und "richtigen" Importen kenne :D
Das Hautproblem mit Sternchenimporten ist, dass du keinen Überblick darüber hast, was gerade alles importiert wurde. Deswegen kann es durchaus passieren, dass du irgendwelche Namen überschreibst, ohne dass dir das bewusst ist.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Darii hat geschrieben:keinen Überblick darüber hast, was gerade alles importiert wurde.
Hallo!

Es geht sogar noch einen Schritt weiter: Gerade als Anfänger weiß man nicht was mit so einem Sternchenimport imporiert wird. Jetzt weiß man nicht, wenn man das Programm durchliest, woher die im Programm verwendeten Befehle/Objekte überhaupt kommen. Das Programm wird schwerer lesbar. Man braucht länger um die Zusammenhänge zu begreifen.

Das verwirrt nicht nur Anfänger. Und deshalb ärgert es mich so sehr, dass Buchautoren so oft Sternchenimporte verwenden.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Wenn du einen Sternchenimport benutzt sieht das so aus:

Code: Alles auswählen

from Tkinter import * #~ BÖSE!
root = Tk()
#~ und so weiter...
Richtig importiert:

Code: Alles auswählen

import Tkinter as tk #~ wenn du importierst
root = tk.Tk() #~ kannst du den modulen 
#~ ``neue namen`` geben, mit denen sie
#~ so wie hier innerhalb deines skripts auf-
#~ gerufen werden können
Lg, Jonas
Antworten