Empfehlung für GUI

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.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

hi!
ich suche zur Zeit eine GUI, die einfach zu Prgrammieren ist.
sie brauch keine großen extras, nur selectboxen jeder art und die standartausgabe.
habe mir tkinter angekuckt und verzeifele. oder ist das normal?
habe, wie so wenige andere, keine lust, die hauptzeit für die gui zu verwenden...
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Ich benutze wxPython und bis jetzt ist der Aufwand recht gering (vorallem wenn es bei chkBoxes etc. bleibt)

Gruess
DM
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

murph hat geschrieben:ich suche zur Zeit eine GUI, die einfach zu Prgrammieren ist.
Hi murph!

Du kannst es so wie ich machen. Zuerst mal Tkinter ausprobieren und verzweifeln, dann noch das Tutorial zu pyGTK rein ziehen und diesmal ein wenig später verzweifeln, und dann das Buch "wxPython in Action" lesen und hoffen, dass du nicht verzweifelst.

Also bis jetzt bin ich noch nicht an die Grenzen von wxPython gestoßen. Seit der Umstellung auf den NEUEN Stil (import wx statt from wx import *), muss ich sagen, dass mir wxPython ziemlich gut gefällt. Alles schön in Klassen einteilen und mit Events zurch die Gegend ballern. Das habe ich schon mit Visual Basic gerne gemacht. ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Installier dir einfach mal wxPython http://wxpython.org/download.php (oder aptitude search wxpython) und probier dieses Beispiel aus. Vielleicht ist wxPython ja etwas für dich.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx


class MyFrame(wx.Frame):

    def __init__(self, parent = None, id = -1, title = "Hallo Welt"):
       
        # Initialisieren
        wx.Frame.__init__(self, parent = parent, id = id, title = title)
        
        # Panel auf dem alle Steuerelemente gelegt werden
        panel = wx.Panel(self)
       
        # Box als Abstandhalter. Dadurch wird auch alles untereinander angezeigt.
        vbox = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox)
       
        # Box mit Radiobuttons
        self.choices = (
            u"ich bin glücklich :-) ",
            u"ich bin irgendetwas :-| ",
            u"ich bin traurig :-( ",
        )
        self.rb_auswahl = wx.RadioBox(
            parent = panel, id = -1, label = u"wähle aus",
            choices = self.choices, style = wx.VERTICAL
        )
        vbox.Add(
            self.rb_auswahl, proportion = 0,
            flag = wx.ALL | wx.EXPAND, border = 5
        )
       
        # OK-Button
        btn_ok = wx.Button(parent = panel, id = wx.ID_OK, label = "&OK")
        vbox.Add(btn_ok, proportion = 1, flag = wx.ALL | wx.EXPAND, border = 5)
        btn_ok.Bind(wx.EVT_BUTTON, self.on_ok)
       
        # Größe des Frames anpassen und Minimalgröße festlegen
        panel.Fit()
        self.SetClientSize(panel.GetSize())
        self.SetSizeHintsSz(self.GetSize())
       
        # Zentrieren
        self.Center()
   

    def on_ok(self, event):
        """
        Wird ausgelöst, wenn der OK-Button geklickt wird.
        """
       
        selected_index = self.rb_auswahl.GetSelection()
        print u"Du hast folgende Auswahl getroffen: '%s'" % \
            self.choices[selected_index].strip()


if __name__ == "__main__":
    app = wx.PySimpleApp(
        redirect = True # leitet STDOUT in ein Fenster um
    )
    frame = MyFrame()
    frame.Show()
    app.MainLoop()
Richtig interessant wird es aber erst dann, wenn du dir die Demo angesehen hast. Diese musst du extra installieren, befindet sich aber auch unter der URL, die oben angegeben ist.

mfg
Gerold
:-)

Edit: Ich hatte das Panel vergessen. Jetzt sieht das Beispielskript auch unter Windows gut aus.
Zuletzt geändert von gerold am Mittwoch 7. Juni 2006, 13:22, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
beewee
User
Beiträge: 35
Registriert: Mittwoch 18. Januar 2006, 22:16

hm, ich kann wxwidgets ehrlich gesagt nicht empfehlen. Ich habe es bei einem Projekt benutzt, mit der Folge, dass sich das Programm bei manchen öffnet aber sofort wieder schließt.
Ich würde eher empfehlen, direkt pyGTK oder pyQT zu benutzen

BeeWee
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

beewee hat geschrieben:Ich habe es bei einem Projekt benutzt, mit der Folge, dass sich das Programm bei manchen öffnet aber sofort wieder schließt.
Hi BeeWee!

Du weißt aber schon, dass du normalerweise eine ausführliche Fehlermeldung bekommst, wenn du das Programm über die Konsole öffnest?

Ich habe sogar schon einige wxPython-Programme mit **cx_freeze** so verpackt, dass diese direkt von einer CD laufen. -- Ohne installiertem Python und wxPython. Siehe: http://www.python-forum.de/topic-5726.html

Insgesamt hatte ich bis jetzt mehr Probleme mit pyGTK als mit wxPython. pyQT verwende ich nicht, da man sich als kleiner Entwickler die Lizenz für kommerzielle Programme nicht leisten kann.

Natürlich ist die Wahl des GUI-Toolkits auch eine emotionelle Entscheidung. Das Toolkit muss man mögen, da man bei GUI-Programmen die meiste Zeit damit verbringt, das Verhalten (nicht das Aussehen) des GUI zu programmieren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
beewee
User
Beiträge: 35
Registriert: Mittwoch 18. Januar 2006, 22:16

Ja, ich weiß, dass ich normalerweise eine ausführliche Fehlermeldung kriege, wenn das so wäre, wäre es ja in Ordnung. Aber das ist eben nicht so (siehe hier in etlichen Beiträgen), das Fenster schließt sich ohne Kommentar sofort wieder :(

Grüße,

BeeWee
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

pyQT verwende ich nicht, da man sich als kleiner Entwickler die Lizenz für kommerzielle Programme nicht leisten kann.
Wenn es sich allerdings um OSS-Projekte handelt, die unter die GPL fallen sollen, ist eine komplette IDE mit Dokumentation (http://www.thekompany.com/products/blackadder/) nur 40€ teurer als das vorgeschlagene Buch. Ist natürlich kein Ersatz im kommerziellen Umfeld, im OSS oder Hobbybereich aber imho durchaus eine Überlegung wert.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

setzen denn pyqt und pygtk auf linux auf?
wen ja, kann man die trotzdem unter windows zum laufen bringen?

//edit:
am besten gefällt mir das mit den choices^^
Benutzeravatar
beewee
User
Beiträge: 35
Registriert: Mittwoch 18. Januar 2006, 22:16

pyqt und pygtk setzen zwar auf Linux auf, sind aber auch für Windows verfügbar (bei pyqt bin ich mir sicher, bei pygtk bin ich mir fast sicher :D )
Siehe hier

BeeWee
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Zumindest QT gibt es für Windows, ist aber im Moment unter einer proprietäten+kostenpflichtigen Lizenz verfügbar.
Zum Erscheinen von QT4 (Ende des Jahres???) soll auch hier eine Doppellizenz verfügbar sein.
--> http://www.riverbankcomputing.co.uk/pyqt/download.php

Ich benutze im Moment für kleinere Sachen Tkinter weil es einfach dabei ist.
Programmiert habe ich noch nie mit wxpy aber aus meiner Erfahrung als Anwender hat es bei mir keinen guten Stand. Ist gefühlt zu langsam und einige Versionen waren auch mal etwas instabil. Deswegen habe ich keine Anwendungen mit wxpy in Benutzung.

Beeindruckend finde ich die Widgetsammlung von QT. Wie sich PyQT beim Programmieren "anfühlt", kann ich nicht sagen.

cu Sebastian
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ich nehm immer direkt pyGTK. Doe API ist wunderhübsch und es ist sehr flott. Da kann wx nicht mithalte, dass sich manchmal einfach in der Luft auflöst und auch ansonsten arschlahm im Vergleich ist. Und sowas wie .glade in gtk hab ich für wx noch nicht gefunden.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
beewee
User
Beiträge: 35
Registriert: Mittwoch 18. Januar 2006, 22:16

Und sowas wie .glade in gtk hab ich für wx noch nicht gefunden.
Doch, ex gibt wxglade, allerdings ist das recht buggy und vom Funktionsumfang her nicht berauschend...

BeeWee
de_master
User
Beiträge: 72
Registriert: Samstag 15. Januar 2005, 15:19

Ich kann wxPython nur empfehlen. Vorallem mit dem neuen Buch "wxPython in Action".

wxPython läuft bei mir auf Linux uns OSX einwandfrei. Auf OSX gibt es bei mir ab und an Probleme mit Images, jedoch ist das einfach zu handeln.

Michael
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Es kommt auch immer darauf an wofür du programmierst. Die GTK Schnittstelle ist nun mal nativ nur für GNOME da und nur über mehr oder minder großen Umständen kann man es auf Windows benutzten (von den ganzen anderen WindowManager auf GNU/Linux Basis mal abgesehen). Solltest du nur Linux Programmer schreiben kannste gedrost zu pyGTK greifen =)

pyQT kann ich überhaupt nicht empfehlen. 1) weil es nicht frei (im Sinne von Freiheit) ist und 2) für KDE ist und es noch keine ordentliche Schnittstelle für GNOME, XFCE etc und Windows gibt

Willst du komplett Plattform unabhängig Programmieren solltest du zu wxPython greifen, da das auf _jeder_ Oberfläche gleich ausschaut. Du kann also auf Linux schon sehen wie es unter Windows ausschaut

mfg
SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

SigMA hat geschrieben:Willst du komplett Plattform unabhängig Programmieren solltest du zu wxPython greifen, da das auf _jeder_ Oberfläche gleich ausschaut. Du kann also auf Linux schon sehen wie es unter Windows ausschaut
Hi!

@SigMA: Das kann ich so nicht ganz unterschreiben. wxPython greift unter Linux auf GTK zurück. Deshalb sieht eine wxPython-Anwendung unter Linux so aus wie andere GTK-Anwendungen halt so aussehen. Unter Windows sieht eine wxPython-Anwendung wie jedes andere Windows-Programm aus. Und das ist für viele Windows-DAUs enorm wichtig.

Fakt ist, dass wxPython-Anwendungen von der Oberfläche her unter Linux nicht von nativen GTK-Programmen oder unter Windows nicht von nativen Windows-Programmen unterschieden werden können.

Gefühlter "Fakt" ist, dass wxPython-Programme unter Windows sehr schnell sind und der Aufwand, ein wxPython-Programm auch unter Linux richtig schnell zu halten, sehr gering ist. Lange Listen, mit mehreren 1000 Einträgen sollte man in eine *virtuelle* Liste legen. Genauso auch mit großen Tabellen. Aber dafür ist alles vorbereitet. Man muss es nur verwenden.

Fakt ist, dass ich bis jetzt keine, nicht von mir verschuldeten, Abstürze von wxPython-Programmen beobachtet habe. Ich programmiere mit dem neuesten wxPython und in dem Stil, dass ich nicht alles mit "*" importiere, also auf die neue, empfohlene Art.

Vielleicht hat sich wxPython ja mit den neueren Versionen positiv weiterentwickelt? Ich kann es nicht sagen, da ich erst vor Kurzem zu wxPython gestoßen bin.

Mit einer guten IDE, die ständig anzeigt, welche möglichen Getter- und Setter-Methoden es gibt, ist es wirklich einfach, gut aussehende Programme mit wxPython zu schreiben. Allerdings empfinde ich es erst jetzt so einfach, da ich das Buch gelesen habe. Es macht wirklich einen Unterschied, ob jemand Schritt für Schritt erklärt, wie man ein Programm mit wxPython aufbauen kann und welche Widgets wie bedient werden können, als wenn man sich alles selber zusammensuchen muss.

Dass die Namen der Getter- und Setter-Methoden nicht aus der Luft gegriffen sind und meistens einer ziemlich logischen Namensgebung folgen, sollte dieser Code demonstrieren:

Code: Alles auswählen

textbox = wx.TextCtrl()
textbox.SetBackgroundColour("green")
textbox.SetFocus()
textbox.SetValue("Hallo Welt")
value = textbox.GetValue()
Da sehe ich gewisse Gemeinsamkeiten mit pyGTK.

Warum bin ich nicht bei pyGTK geblieben? Ganz einfach. wxPython stellt für den Entwickler eine ENORME erleichterung dar, da es bei wxPython viele gute Widgets (Steuerelemente) und Dialogfenster gibt, die man sich mit pyGTK mühsam selber zusammenprogrammieren muss.

Hier ein paar Beispiele:

Folgender Code gibt eine zentrierte Dialogbox mit einer Nachricht aus.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx

app = wx.PySimpleApp()
wx.MessageBox(
    message = u"Bitte bestätige diese Nachricht mit OK.",
    caption = u"Nachricht"
)
Bei vielen Dialogen gibt es jeweils eine native Dialog-Klasse und eine Kurzform davon.
Klasse: wx.MessageDialog()
Instant-Version: wx.MessageBox()

Die Klasse kann man besser beeinflussen und die Kurzform ist für schnelle Dialoge, ohne Sonderwünsche. Wie man sieht, wird es einem Programmierer wirklich einfach gemacht. Genau das vermisse ich an pyGTK. Die Dinge die man ständig braucht, sind nicht einfach gehalten.

Eine einfache Listbox, also etwas das man ständig braucht, muss man sich mit pyGTK aus "Legosteinen" zusammenbauen, also immer wieder neu erfinden, oder den Code irgendwo sammeln und so wiederverwenden.
Eine InputBox vermisst man komplett. Man muss sich diese, grob gesagt, aus einem Dialog, einem Label und zwei Buttons zusammenbauen.
...

Allerdings, wer nur für Linux oder nur für Gnome Programme schreibt, der sollte natürlich auch das dafür vorgesehene Framework verwenden. Ganz klar. Das war für mich aber nie Thema. Meine Kunden sind typische Windows DAUs und meine Programme müssen primär unter Windows gut laufen. Ich setze ziemlich viel daran, dass meine Programme auch unter Linux lauffähig sind oder werden. Das ist aber (in Anführungszeichen) nur "Hobby". Meine Kunden interessiert das nicht. Und genau für diesen Zweck ist wxPython derzeit die beste Wahl für mich.

So uns jetzt ist Schluss mit dieser Lobesrede. Andere sollen auch noch zu Wort kommen. :twisted:

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
g4borg
User
Beiträge: 16
Registriert: Donnerstag 4. Oktober 2007, 20:38

wxPython oder PyQT sind zu empfehlen.

@sigma:
QT ist frei (GPL) wie freiheit, unter jeder plattform, und wx garantiert auch kein gleiches aussehen auf jeder plattform, schon gar nicht windows<->linux... da ist qt sogar besser als wahl, weil es unter jeder plattform gleich auszusehen hat.
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Hallo,

ich handhabe es ähnlich wie Gerold: Ich entwickele Anwendungen für Kunden, die natürlich bevorzugt Windows einsetzen. Ich dagegen kann es nicht ausstehen, unter Windows zu arbeiten und mache deshalb so viel Entwicklungsarbeit wie möglich von der Linuxseite meines Rechners.
Anfangs habe ich auch mit GTK gearbeitet, bis ich irgendwann entnervt feststellte, daß einige komplexere, in meinen Augen aber elementare Elemente nicht standardmäßig verfügbar waren. Heute bin ich mir sicher, daß diese sich über zusätzliche Bibliotheken problemlos nachrüsten lassen, aber damals habe ich es nicht probiert, und heute habe ich kein Interesse mehr daran. Ich empfinde wxPython als sehr viel angenehmer im Umgang.

Zum Thema gleiches Aussehen unter Linux und Windows möchte ich den folgenden Screenshot beitragen: Er zeigt die Entwicklungsversion eines meiner Programme unter Windows - und einen Designfehler meinerseits, der unter Linux aber nicht auffiel: Die dunkelgrauen "Rahmen" sind unter Linux nicht zu sehen. Ergo: Auch hier kann man sich nicht einfach darauf verlassen, daß es immer so aussieht, wie man es erwartet. Wenn man ein wenig durch die Dokumentation blättert, wird man auch immer wieder Hinweise darauf finden, daß sich bestimmte Kontrollelemente auf den unterschiedlichen Betriebssystemen unterschiedlich verhalten. Das ist kein Problem, so lange man es im Hinterkopf behält und sorgfältig testet.

Bild
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

murph hat geschrieben:ich suche zur Zeit eine GUI, die einfach zu Prgrammieren ist.
sie brauch keine großen extras, nur selectboxen jeder art und die standartausgabe.
habe mir tkinter angekuckt und verzeifele. oder ist das normal?
So fing der Thread mal an. Von Tkinter war seitdem hier nichts mehr zu lesen.
Warum nicht? Was spricht gegen Tkinter?

Ich bin noch nicht lange dabei, habe erst einige zaghafte Schritte mit Tkinter gemacht, aber ich fand es gerade nicht zum Verzweifeln, sondern äußerst transparent und nachvollziehbar. Vielleicht liegt das aber einfach daran, dass ich von Java her komme und bisher GUIs mit Swing erstellt habe - alles in Handarbeit. Dagegen ist Tkinter wirklich ein Geschenk (nicht hinsichtlich der Möglichkeiten, aber hinsichtlich der Transparenz und des Aufbaus einer GUI).

Vielleicht liegt es aber auch daran, dass ich noch keine GUIs entsprechender Komplexität mit Tkinter erstellt habe.

Also, nochmal meine Frage an die, die schon reichlich Erfahrung auf diesem Gebiet haben: Was spricht gegen Tkinter?
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Ich hab mir bisher noch keine andere GUI als Tkinter angeguckt und auch noch nicht wirklich viel mitgemacht. Da ich nur ganz einfaches Fenster mit paar Radiobuttons und Entrys, hat das gereicht. Bin ganz gut damit klar gekommen.

Frage ist eher wie bekommt man hübsche Oberflächen hin. ich find meine immer total hässlich :(
Antworten