Welche GUI-Toolkits verwendet ihr?

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.

Welche GUI-Toolkits verwendet ihr?

TKinter
44
32%
wxPython
43
32%
Qt
24
18%
gtk+
22
16%
Andere
3
2%
Swing
0
Keine Stimmen
 
Abstimmungen insgesamt: 136
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Beitragvon name » Montag 29. Januar 2007, 13:12

Ich nehm wxPython, finds einfach gut, bis auf das lib.iewin.IEHtmlWindow, das ist echt scheisse und undokumentiert :)
Ich find wxPython schoen simpel und einfach, aber trotzdem maechtig.

So long..
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Beitragvon skypa » Mittwoch 31. Januar 2007, 11:45

Also kann ich mir Tkinter anscheinend mit ruhigen Gewissen beibringen ohne nachher Zeit vergeudet zu haben wenns um plattformunabhängige Programme geht...

Aber was bietet sich im wirkliche grafischen Bereich?
pygame?:

import pygame
from pygame.locals import *

-> No module named locals.... lol?

wxPython?

Blender?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 31. Januar 2007, 12:19

skypa hat geschrieben:Also kann ich mir Tkinter anscheinend mit ruhigen Gewissen beibringen ohne nachher Zeit vergeudet zu haben wenns um plattformunabhängige Programme geht...

Vom Überfluss an Wissen wirst du sicherlich nur profitieren.

skypa hat geschrieben:Aber was bietet sich im wirkliche grafischen Bereich?

Was definierst du als wirklich grafisch? Tkinter ist wirklich, echt und wahrhaftig grafisch.

skypa hat geschrieben:import pygame
from pygame.locals import *

-> No module named locals.... lol?

Warum fragst du zweimal das gleiche? In diesem Thread geht es um einen Überblick über GUI-Toolkits, nicht um irgendwelche Fehler die du findest. Dazu machst du einfach einen neuen Thread auf.

skypa hat geschrieben:Blender?

Blender ist gar kein Toolkit sondern ein Modelling-Programm mit Python-Interface. Du nutzt ja auch kein AutoCAD als grafisches Toolkit für AutoLisp.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
gummibaerchen
User
Beiträge: 51
Registriert: Samstag 7. Oktober 2006, 15:13

Beitragvon gummibaerchen » Samstag 10. März 2007, 14:01

piddon hat geschrieben:Hans, da wäre doch Kylix was für dich, oder nicht?

Für die es nicht wissen: Kylix == Delphi für Linux. Auch von Borland.


Naja, wohl besser Lazarus mit FreePascal :)

Das ist mal richtig nett für GUIs, da es unter KDE, Gnome, Windows und auch Mac immer nativ ist. Mein Favorit für GUIs, aber wie gesagt leider nur FreePascal.
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Beitragvon joost » Sonntag 29. April 2007, 23:16

Hi,

da dies bei einer Umfrage steht, kann man wohl in aller Ruhe etwa Senf dazugeben.

Tkinter hat kein Tabellen-Widget und scheidet für damit für ernsthafte db-gestützte Anwendungen aus !! Leider. Dafür Labels in ein Canvas zu schichten ist viel zu langsam, auf 10.000 Zeilen habe ich einmal eine halbe Stunde gewartet, um das Programm dann ergebnislos zu beenden (und 10.000 Zeilen sollte eine Tabelle können - das kann man gerade noch scrollen, um sich einen ersten Überblick zu verschaffen).

Außerdem hat Tkinter den - im Hinblick auf die 10.000 Zeilen für mich unverzeihlichen - Fehler, noch einen tcl-Interpreter starten zu müssen, wo man doch in Python alles Erforderliche hat (hashables) vor allem. Das macht das Zeug langsam, den Code deutlich schwerer zu debuggen usw. usw. . Klar: TK zu ent-tcl-en wäre ein mittelgroßes Projekt (hab den Source-Code schon mal daraufhin durchgesehen, übersichtlich organisiert sind die 20MB schon. Man müsste für maximale Effizienz dafür aber mit tcl/TK-Spezis zusammenarbeiten, die daran wiederum bestimmt kein Interesse haben). Aber dafür, dass das der Python-Standard-GUIbuilder sein soll, könnte man schon erwarten, dass das erledigt ist.

gtk schafft die 10.000 gerade noch, der gtk-TreeView wird dann aber sehr langsam (bei 2 screens Breite), scrollen ruckelt. Übrigens muss man den beim Einstieg erst einmal finden, hätte Tabellen nie unter 'Trees' gesucht.

gtk also. Die Doku ist allerdings katastrophal lückenhaft. Überall fehlen wichtige Grundsätzlichkeiten wie z.B.

- was Funktionen zurückgeben,
- wo GError definiert ist,
- dass Styles Klassen- und keine Objektmethoden sind, d.h. leicht auf alle Widgets eines Typs wirken,
- wie man rc-Dateien debugged (kann der Doku nicht einmal entnehmen, ob so etwas möglich ist)
- wie man - hat man ein Atom als Namen dafür geschaffen - denn nun ein gtk.Clipboard selbst konstruiert (die Doku behauptet, dass das möglich ist)
- dass ohne gtk.main_iteration_do() immer wieder einmal überhaupt nicht auszukommen ist, auch weil
- gtk ständig eigene Ideen durchsetzt, in welcher Reihenfolge Code auszuführen ist

usw. usw. usw. .

Es gibt aber große Vorteile.
- Die Oberflächen sehen ohne viel Zutun gut aus.
- gtk ist nicht nur GUI- sondern auch Widget-Builder.
- Die Klassenhierarchie ist sehr, sehr sinnvoll (von Überschneidungen mit den basischeren Klassen in gtk.gdk, die das Widget-Building andererseits aber erst ermöglichen, einmal abgesehen).
- Mit der pixbuf-Klasse bringt gtk.gdk tolle, sehr schnelle Grafik-Funktionen mit. Hereinmischen von Wasserzeichen, Transparenz allgemein und Skalieren von Bildern verlangsamt das Laden von Bilddateien nicht merklich.

Und übrigens: Alle, wirklich ALLE goodies von Tkinter hat gtk auch.

Macht's gut !
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. April 2007, 08:30

joost hat geschrieben:Tkinter hat kein Tabellen-Widget und scheidet für damit für ernsthafte db-gestützte Anwendungen aus !! Leider.

Du kannst welche nachrüsten. Musst mal schauen, ob BLT oder PMW sowas nicht mitbringen.

joost hat geschrieben:- dass ohne gtk.main_iteration_do() immer wieder einmal überhaupt nicht auszukommen ist, auch weil
- gtk ständig eigene Ideen durchsetzt, in welcher Reihenfolge Code auszuführen ist

Komisch, ``gtk.main()`` gekoppelt mit ``gobject.idle_add()`` und ``gobject.timeout_add()`` hat bei mir eigentlich immer alles in der richtigen Reihenfolge ausgeführt. Sogar Threads habe ich zum laufen gebracht - wobei ich aber zugebe, dass das wirklich nicht lustig war.

joost hat geschrieben:- gtk ist nicht nur GUI- sondern auch Widget-Builder.

GTK ist weder GUI- noch Widget-Builder ;) Aber es hat mehrere GUI-Builder und man kann eigene Widgets schreiben. Geht aber mit Tkinter auch.

joost hat geschrieben:Und übrigens: Alle, wirklich ALLE goodies von Tkinter hat gtk auch.

Tkinters Canvas ist besser, wenn man mit Vektorgrafik arbeiten will. Sowas würde mich in GTK+ freuen zu sehen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Beitragvon joost » Montag 30. April 2007, 18:08

Du kannst welche nachrüsten. Musst mal schauen, ob BLT oder PMW sowas nicht mitbringen.


PMW habe ich mal gesehen - schwere Enttäuschung, wobei ich nicht mehr genau weiß, ob es mir damals um ein Tabellen-Widget ging. Scheidet aber jedenfalls aus. TiX auch. Und sowieso, das mit dem tcl-Interpreter disqualifiziert TKinter in meinen Augen.

Du sprichst mit einem Außenseiter. Ich betrachte 90% aller Software als Schrott, 9% als brauchbar und 1% als gut. Zu letzterem gehört für mich sqlite, X11, wahrscheinlich der Python-Kern (aber wirklich nur der Kern), tex (wenn ich es auch nicht benutze), wahrscheinlich apsw (scheint mit besser als pysqlite zu sein). Ich interessiere mich für clean. Und ich will jeden Umgang mit Schrott möglichst vermeiden, vor allem auch velaltendes Wissen. Ich lerne sehr gerne, aber will das Gelernte nicht vergessen müssen. Für Linux hatte ich mich immerhin schon bei Version 0.99 entschieden, programmiere im Augenblick aber ausschließlich fremde Hardware.

Wäre ich nicht immer noch bei der idle, würde ich TKinter sogar von der Festplatte verbannen - sind ja immerhin MB.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. April 2007, 18:29

joost hat geschrieben:Ich betrachte 90% aller Software als Schrott, 9% als brauchbar und 1% als gut. Zu letzterem gehört für mich sqlite, X11, wahrscheinlich der Python-Kern (aber wirklich nur der Kern), tex (wenn ich es auch nicht benutze), wahrscheinlich apsw (scheint mit besser als pysqlite zu sein). Ich interessiere mich für clean. Und ich will jeden Umgang mit Schrott möglichst vermeiden, vor allem auch velaltendes Wissen. Ich lerne sehr gerne, aber will das Gelernte nicht vergessen müssen. Für Linux hatte ich mich immerhin schon bei Version 0.99 entschieden

APSW ist was ganz anderes als pysqlite. Ja, hat auch "irgendwas mit SQLite" zu tun, ist aber ein dünner Layer um die SQLite API und kein DB-API 2 kompatibles Modul.

joost hat geschrieben:Wäre ich nicht immer noch bei der idle, würde ich TKinter sogar von der Festplatte verbannen - sind ja immerhin MB.

Ich habe kein Tkinter installiert - weil ich auch IDLE nicht mag. IDLE macht zu viele Probleme und kann sowieso nicht das was ich von meinem Editor fordere.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Beitragvon joost » Montag 30. April 2007, 19:49

Zu GTK2 (wo kommt die '2' denn eigentlich her ?)

Ich arbeite zZ. damit an einem 5000-Zeilen-Projekt und wollte es dafür lernen - inzwischen muss ich fast sagen, 'musste es lernen'.

Einfach ist gtk überhaupt nicht - es ist typische GNU-Software wie bash und make. Beispiel: Ich bringe immer wieder noch die Funktionen von gtk.Window (Toplevel), gtk.Widget und gtk.gdk.Window (Attribut der nicht window-losen widgets - gtk.Label z.B. ist window-los) durcheinander und habe mir deshalb neulich nur einmal die Liste der Funktionen, Attribute und Properties von Widget (und das ist nur die Basisklasse) ausgedruckt: 5 Seiten (quer). Die Klassenhierarchie ist schon in Ordnung, gerade z.B. die in der obigen Klammer genannten window-losen Widgets sind eine gute Idee.

Die Doku muss wohl Tausende von Seiten umfassen und scheint sehr weitgehend automatisiert aus der Doku für C-gtk erstellt zu werden. Man stößt immer wieder auf schwere Lücken. Außerdem ist die Terminologie z.T. eigenwillig, das Widget zur Darstellung von Tabellen heißt TreeView, es kann eben auch das, nämlich Tabellenzeilen hierarchisch ordnen und - nach Leveln kontrollierbar - ein- und ausklappen. Trotzdem werden 90% aller existierenden verwendeten TreeViews wohl Tabellen darstellen, deshalb ist der Name verschroben. border-width steuert nicht das, was normale Menschen unter Border verstehen (und die scheint immer auf 2 Pixel Breite fixiert zu sein, hab noch nicht herausbekommen, ob man an diese Eigenschaft irgendwie herankommt, brauche es aber bisher auch nicht) sondern die Breite eines berandenden Teils des Backgrounds.

Beispiel für eine dicke Lücke in der Doku: gtk.Widget ist nicht die Haupt-Basisklasse, das ist gobject.GObject. Überhaupt ist das gobject-Modul (wird eigens importiert) auf Dauer unverzichtbar. So wird vielleicht nach einiger Einarbeitung selbstverständlich, dass die einzige Exception-Klasse GError dort zu suchen ist. Die Doku sagt einem das aber nicht (besonders nicht das Tutorial, das kann man gleich vergessen), und ich brauchte damals ungefähr eine Stunde, um darauf zu kommen.

gtk ist aber sehr mächtig, die pixbuf-Klasse großartig und ich bleibe erst einmal dabei. Eines meiner Traumprojekte ware, eine DoD-Tabelle (draw-on-demand - Rendern, auch in den Hintergrundbuffer - erst auf Scrollbar-Anforderung) für db-Zwecke zu schreiben. gtk.TreeView ist wesentlich langsamer als nötig.
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Beitragvon joost » Montag 30. April 2007, 19:57

Sorry, ich sehe gerade: ich habe hier geflooded, bzw. sehr viel von oben wiederholt. Las nur gerade zum ersten Mal die Frage von gerold wirklich und wollte halt darauf antworten. :cry:
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. April 2007, 20:09

joost hat geschrieben:Zu GTK2 (wo kommt die '2' denn eigentlich her ?)

Von der Version: GTK+ 2.x, aber GTK2+ oder GTK+2 sieht seltsam aus.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

Beitragvon pyStyler » Montag 30. April 2007, 21:28

von wegen Tkinter langsam.
Hier deine 10 000 Einträge in weniger als 3 Sekunden.

http://paste.pocoo.org/show/1463/

edit: link korrigiert
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Beitragvon joost » Montag 30. April 2007, 21:43

Ne,

geht nur so schnell, weil Deine Zeilen alle gleich sind. Habe hier die kommentierte Zeile geändert und das ganze gerade in der idle gestartet. Das tk-Fenster ist noch immer nicht zu sehen. Das tk-Fenster erscheint dann nach etwa 5 Minuten (und was weiß, was wäre, wenn noch mehr Unterschiede wie aus einer echten db darin wären, dazu mit 10 Spalten oder so).

Code: Alles auswählen

class Master(object):
    def __init__(self):
        self.dataBase = shelve.open(DATABASE)
       
        for xv in range(100):
            self.prdk = '0123145'+str(xv)  # geändert
            self.entry = ['Leckerschocko', '1']
            print 'Hallo'
            self.dataBase[self.prdk] = self.entry
            print self.dataBase
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

Beitragvon pyStyler » Montag 30. April 2007, 21:50

joost hat geschrieben:Ne,

geht nur so schnell, weil Deine Zeilen alle gleich sind. Habe hier die kommentierte Zeile geändert und das ganze gerade in der idle gestartet. Das tk-Fenster ist noch immer nicht zu sehen. Das tk-Fenster erscheint dann nach etwa 5 Minuten (und was weiß, was wäre, wenn noch mehr Unterschiede wie aus einer echten db darin wären, dazu mit 10 Spalten oder so).

Code: Alles auswählen

class Master(object):
    def __init__(self):
        self.dataBase = shelve.open(DATABASE)
       
        for xv in range(100):
            self.prdk = '0123145'+str(xv)  # geändert
            self.entry = ['Leckerschocko', '1']
            print 'Hallo'
            self.dataBase[self.prdk] = self.entry
            print self.dataBase


Na super du hast es echt drauf! Schau deinen Code noch einmal an und sag was du falsch gemacht hast.
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

Beitragvon pyStyler » Montag 30. April 2007, 22:18


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder