Python GUIs mit Glade

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Hallo.

Kennt jemand eine gute Doku, wie man Python GUIs mit Glade erstellt? Wenn möglich auf Deutsch, da ich nicht sehr gut Englisch kann.

Google habe ich bereits mehrfach bemüht. Ich habe zwar ein paar Dinge gefunden. Allerdings hat der Code auf den Seiten nur eins gemeinsam.

Code: Alles auswählen

import gtk
Nicht sehr viel. An Doku auf meinem Rechner habe ich auch nichts Produktives gefunden.

Kann das sein, dass es nicht viel Dokus über pygtk und Glade gibt?

Marcus0
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

hier mal ein Link auf die Schnelle
http://hydra.linuxtag.uni-kl.de/~spindl ... index.html


Gruß

Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Funktioniert nicht. :(

Der Text ist auf GTK 1 ausgerichtet. Ich weiß ja nicht, was sich seit 2001 bei Python, bzw. den Modulen und Glade alles getan hat.

Aber von allen Modulen, die dort importiert werden sollen, wird bei mir nur eins gefunden. gtk.

Ich vermute mal, dass die Module nicht mehr in der Form existieren.

Oder ich bin nicht ganz da. :?

Marcus
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

mit gtk-1.2 funktionierts wunderbar, auch heutzutage, du hast wohl gtk2, das hat mit meine Glaskugel aber verschwiegen ;)

Du könntest es, falls auch gtk-1.2 installiert ist, mit folgenden Zeilen am Programmanfang versuchen:

Code: Alles auswählen

import pygtk
pygtk.require('1.2')
Gruss Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Dookie hat geschrieben:mit gtk-1.2 funktionierts wunderbar, auch heutzutage, du hast wohl gtk2, das hat mit meine Glaskugel aber verschwiegen ;)
Sorry, hatte ich vergessen zu schreiben. Für mich ist GTK2 schon so zu sagen Standard geworden.

GTK1.2 ist bei mir installiert. Deinen Code will bei mir aber trotzdem nicht. :(

Traceback (most recent call last):
File "./gpizza.py", line 4, in ?
pygtk.require('1.2')
NameError: name 'pygtk' is not defined

Ist die einzigste Antwort, die ich bekomme.

Werde mich wohl nach einem zweiten Buch über Python umschauen müssen. Es gibt doch bestimmt Eins, in dem auch Glade behandelt wird. Kann aber nur hoffen, dass es lehrreicher ist, als das, was ich hier liegen habe.

Marcus
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

haste das import pygtk vergessen?
Die Änderungen von 1.2 zu 2.0 sind vor allem daß bei 2.0 nicht mehr vor jede Methode die importiert wurde das GTK davor muss, dafür ist es zu empfehlen, nur noch mit import gtk das gtk zu importieren und die importierten Sachen qualifiziert aufzurufen, also mit gtk. davor.
Das kann dann Dein editor erledigen, einfach "GTK" druch "gtk." ersetzen.


Gruß

Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Momentan wird ja nicht einmal die .glade Datei eingelesen.

Das mit import habe ich jetzt hinbekommen. Die Reihenfolge hat wohl nicht gestimmt.

Code: Alles auswählen

import pygtk
pygtk.require('1.2')
import gtk
Aber das ich kein Modul 'libglade' habe, funktioniert auch die das Lesen der .glade Datei nicht.

Code: Alles auswählen

def main():
    xml = libglade.GladeXML('gpizza.glade')
    app = xml.get_widget('app1')
    app.connect('destroy', mainquit)
    mainloop()
Könnten meine Versionen zu neu sein?

Python-2.3
Pygtk-2.0.0

Ach ja. Was ist denn der Unterschied zwischen gtk und pygtk beim Import?

Marcsu
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Bei pygtk kannst Du eine Version angeben mit require.

libglade gibts auch nicht für python, http://www.daa.com.au/~james/software/libglade/ Zeigt wie das in Python gehandelt wird.


Gruß

Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Gut, dass mit libglade habe ich wohl jetzt verstanden. Hoffe ich!

Nochmal wegen pygtk und gtk beim Import.

Sind das beides die selben Module, oder gibts es da, abgesehen von require, noch andere Unterschiede.

help(pygtk) gibt nur Hinweise auf require aus. Aber ich muss auch zugeben, dass ich mit der Hilfe, die die Python-Shell ausspuckt, nicht unbedingt zurecht komme. :cry:

Marcus
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

pygtk und gtk sind 2 verschiedene Sachen. Mit pygtk kannst Du zuerst die Version vestlegen mit der Du arbeiten willst, danach importierst Du gtk und es wird wenn vorhanden die richtige Version geladen.


Gruß

Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Sorry, aber ich glaube ich versteh das immer noch nicht. :cry:

Dient PyGTK nur dazu, die GTK-Version anzugeben, oder enhält PyGTK noch irgend etwas?

Ich glaube, ich sollte die Finger von GTK lassen und bei Tkinter bleiben! :(

Ich habe hier jetzt schon drei Bücher über Python liegen, eins davon behandelt nur GUI-Toolkits.

Aber wie man Python und GTK, speziell Glade zusammenbringt will einfach nicht in mein Hirn! :x

Marcus
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

jo PyGTK enthält sonst nichts ausser dem require.


Gruß

Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Super! Zwei Erfolge an einem Tag. :wink:

Habe nicht nur den Unterschied zwischen PyGTK und GTK verstanden, sondern in meinem dritten Versuchsskript mit Glade hab ich es geschafft, dass sich das Info-Fenster öffnet. :D

Allerdings ist mir aufgefallen, dass die Skripte nie beendet werden, wenn ich das Fenster über das [X] schließe.

Bei den Skripten mit Tkinter hatte ich das Problem nicht. Kennt ihr vielleicht des Rätsels Lösung?

Ich weiß ja, dass man bei einem neuen Problem ein neues Thema anfangen soll. Aber eigentlich gehört das ja irgendwie zum Theme. Denke ich.

Marcus
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

da fehlt ein dein_window.connect("destroy", gtk.mainquit) bei gtk1.2 heissts glaub ich GTKmainquit,


Gruß

Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Danke. Nach fast einer Stunde funktioniert es.

Marcus
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mir hat bis jetzt PyGTK 2 besser gefallen als Tkinter jemals.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
qed

http://pygtkmvc.sourceforge.net/index.php

Arbeitet jemand mit diesen Klassen?

Macht man für jedes einzelne Window einen neuen View, oder wie hanhabt man die Anzeige eines neuen Fensters (Bsp. FileChooserDialog)?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

qed hat geschrieben:http://pygtkmvc.sourceforge.net/index.php

Arbeitet jemand mit diesen Klassen?
Also ich habe davon noch nicht gehoert, ich denke dafuer bin ich zu chaotisch um das zu nutzen, aber ich werd's mir vllt. ansehen, es koennte ganz gut sein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

Leonidas hat geschrieben:
qed hat geschrieben:http://pygtkmvc.sourceforge.net/index.php

Arbeitet jemand mit diesen Klassen?
Also ich habe davon noch nicht gehoert, ich denke dafuer bin ich zu chaotisch um das zu nutzen, aber ich werd's mir vllt. ansehen, es koennte ganz gut sein.
Ich finds absolut praktisch. Mein Problem weiter oben stellte sich während der Einlese Phase. Jetzt hat sich das Problem gelöst.

Glade 2 Fenster zeichen. Ein Fenster = ein View & ein Controller, sprich View kopieren, kurz anpassen. Im Controller die Funktionen definieren.

Es braucht Einarbeitungszeit, danach ists enorm praktisch.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi,

ich hab mir pygtkmvc jetzt auch angeschaut. Vom Prinzip her recht gut gedacht, allerdings haperts etwas an der Umsetzung.
1. Verwendung von eval in support/metaclass_base.py
2. Verwendung des veralteten Moduls new in support/metaclass_base.py
3. Soweit ich gesehen habe können nur Attribute/Properies von Klassen von einem Observer überwacht werden. Die in Python so effizienten Listen und Dictionaries sind damit kaum zu verwenden.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Antworten