Hallo miteinander,
ich programmiere noch ganz klassisch, also nicht objektorientiert.
Gibt es eine Möglichkeit mit Python dennoch grafische Oberflächen bauen kann?
Ein Bekannter hat gemeint, dass dies mit "C" und GTK funktioniert. Geht das auch mit Python?
Ich bin nicht auf GTK fixiert und würde auch entsprechend anderes nehmen.
Alles was ich im Netz finde, hat mit Objekten zu tun.
Ich möchte auf der Oberfläche hauptsächlich mehrere Grafiken (Linienplots) darstellen.
Wer schön, wenn mir jemand helfen könnte.
Grüße bastel
GUI ohne objektorientierte Programmierung
Wenn es dir um den Verzicht des Entwurfs eigener Klassen geht: Sicher, kannst du machen, nicht nur mit Gtk.
Sofern es nicht nur ein ziemlich kleines Progrämmchen ist, dürfte der bessere Weg aber sein, dich zunächst mit objektorientierten Elementen vertraut zu machen (und gerade mit Python ist das nicht sehr schwierig) und dann deine GUI zu entwickeln. Eine Alternative zu Gtk könnte Tkinter sein, das mit dem Canvas-Widget gute Voraussetzungen für das Erstellen von Liniengrafiken mitbringt.
Sofern es nicht nur ein ziemlich kleines Progrämmchen ist, dürfte der bessere Weg aber sein, dich zunächst mit objektorientierten Elementen vertraut zu machen (und gerade mit Python ist das nicht sehr schwierig) und dann deine GUI zu entwickeln. Eine Alternative zu Gtk könnte Tkinter sein, das mit dem Canvas-Widget gute Voraussetzungen für das Erstellen von Liniengrafiken mitbringt.
-
- User
- Beiträge: 28
- Registriert: Samstag 20. Februar 2010, 15:14
Danke für Deine Antwort.
Ich würde aber doch ganz gerne auf Objekte verzichten. Ist ja nicht so, dass ich es noch nie probiert hätte.
Aber ich komme damit einfach nicht klar. Wenn ich mich lange damit beschäftigt habe, glaube ich es zu können.
Wenn ich es dann aber einsetzen will, merke ich, dass ich es doch nicht blicke
Hast Du eventuell einen Link oder ein Stichwort nach dem ich suchen könnte? Irgendwas ohne Objekte?
Grüße bastel
Ich würde aber doch ganz gerne auf Objekte verzichten. Ist ja nicht so, dass ich es noch nie probiert hätte.
Aber ich komme damit einfach nicht klar. Wenn ich mich lange damit beschäftigt habe, glaube ich es zu können.
Wenn ich es dann aber einsetzen will, merke ich, dass ich es doch nicht blicke
Hast Du eventuell einen Link oder ein Stichwort nach dem ich suchen könnte? Irgendwas ohne Objekte?
Grüße bastel
Du wirst leider nicht drumherum kommen. GUIs sind im Grunde *immer* OO - auch wenn GTK zB zwar in C geschrieben wurde, so haben die sich darin einen eigenen, dynamischen Objekt-Layer gebaut. Das heisst es ist OO, nur mit einer nicht dafuer ausgelegten Sprache. Was es wenn eher *noch* schwieriger macht.
Zum Beispiel gibt es eben in jeder GUI widgets, und davon Spezialisierungen wie zB Buttons, Scrollbars, Listen-Views. Und das sind in OO Ableitungen oder Spezialisierungen, und mittels OO-typischer Techniken wird zB das Kommando "mal dich mal" von einem Vater-Objekt an seine Kinder-Objekte delegiert - und je nachdem, was die *wirklich* sind, malen die sich dann. Das ist klassisch OO, und genauso macht das auch GTK.
Zum Beispiel gibt es eben in jeder GUI widgets, und davon Spezialisierungen wie zB Buttons, Scrollbars, Listen-Views. Und das sind in OO Ableitungen oder Spezialisierungen, und mittels OO-typischer Techniken wird zB das Kommando "mal dich mal" von einem Vater-Objekt an seine Kinder-Objekte delegiert - und je nachdem, was die *wirklich* sind, malen die sich dann. Das ist klassisch OO, und genauso macht das auch GTK.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Zudem ist in Python alles ein Objekt Das wirklich schwierige dürften vor allem die Nebenläufigkeiten sein, an die man sich bei GUIs gewöhnen muss.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- User
- Beiträge: 28
- Registriert: Samstag 20. Februar 2010, 15:14
Danke Euch !
Ich hab's befürchtet, dass ich nicht drumrum komme
Naja, dann versuche ich es eben nochmal mit OO.
Mit der GUI werde ich mir dann wohl zuerst mal GTK und glade anschauen. Grafikelemente automatisch setzen zu lassen gefällt mir nicht so.
Grüße bastel
Ich hab's befürchtet, dass ich nicht drumrum komme
Naja, dann versuche ich es eben nochmal mit OO.
Mit der GUI werde ich mir dann wohl zuerst mal GTK und glade anschauen. Grafikelemente automatisch setzen zu lassen gefällt mir nicht so.
Grüße bastel
Python ohne Objekte geht nicht (siehe Hyperion) und ich vermute mal, dass allen in Frage kommenden GUI-Toolkits gemeinsam ist, dass ihre Widgets (oder wie immer man es im jeweiligen Toolkit nennt) als Objekte von entsprechenden Klassen erzeugt werden. Ich habe nur gesagt, dass du auch ohne eigene Klassenentwürfe GUI-Programmierung betreiben kannst.bastel-wastel hat geschrieben:Irgendwas ohne Objekte?
Wenn es dir nur um einfache Zeichenfunktionen geht und es nicht auf Geschwindigkeit ankommt, dann wäre etvl. turtle oder frog etwas für dich.
Code: Alles auswählen
from frog import Pool, Frog
page = Pool(width=600, height=400)
pen = Frog(page)
pen.color, pen.fillcolor = "red", "yellow"
pen.fill = True
pen.speed = 10
for i in range(36):
pen.move(200)
pen.turn(170)
page.ready()
Code: Alles auswählen
from turtle import *
color('red', 'yellow')
begin_fill()
for i in range(36):
forward(200)
left(170)
end_fill()
done()
@bastel-wastel: Falls es wirklich nur darum geht, aus Daten Plots zu erzeugen und anzuzeigen, ist vielleicht matplotlib einen Blick wert. Diese Bibliothek konzentriert sich nur auf das Erzeugen von Diagrammen und Plots und ist daher einfacher als vollwertige UI-Bibliotheken.
-
- User
- Beiträge: 28
- Registriert: Samstag 20. Februar 2010, 15:14
Danke, matplotlib wollte ich sowieso benutzenlunar hat geschrieben:@bastel-wastel: Falls es wirklich nur darum geht, aus Daten Plots zu erzeugen und anzuzeigen, ist vielleicht matplotlib einen Blick wert. Diese Bibliothek konzentriert sich nur auf das Erzeugen von Diagrammen und Plots und ist daher einfacher als vollwertige UI-Bibliotheken.
Mittlerweile funktioniert das OO Programmieren mit pyGTK ganz ordentlich. Habe in meinem Hauptfenster auch die benötigten Grafiken (aus der matplotlib) einbetten könnten.
Lediglich das Packing finde ich bei pyGTK bisher noch sehr aufwändig :K
Das nächste Mal versuche ich es mit glade. Ich erhoffe mir davon, dass der Quellcode nicht zu sehr aufgebläht wird.
Was bevorzugt Ihr: Packing im Quellcode oder über glade zusammen klicken? Was scheint für den Einstieg schneller ans Ziel zu führen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Glade. Finds eh Stuss was anderes als libglade/GtkBuilder zu verwenden. Also außer dem guten Argument "Hey, ich mag gerne seitenweise GUI-Code schreiben".bastel-wastel hat geschrieben:Was bevorzugt Ihr: Packing im Quellcode oder über glade zusammen klicken? Was scheint für den Einstieg schneller ans Ziel zu führen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice