GTK-Window erscheint nicht.

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
julianibus
User
Beiträge: 16
Registriert: Montag 21. Juni 2010, 13:04
Wohnort: Aschaffenburg
Kontaktdaten:

Hallo,
ich habe beschlossen mich in pygtk einzuarbeiten, dabei will ich auch von dem Glade-Designer gebrauch machen.
Dafür hab ich dieses Tutorial gemacht: http://www.pygtk.org/articles//pygtk-gl ... _Glade.htm

Wenn ich das ausführe bleibt das Programm ohne Fehler am Laufen, es erscheint aber kein Fenster.

Das Programm:

Code: Alles auswählen

#!/usr/bin/env python

import sys
import pygtk
import gtk
import gtk.glade
class HellowWorldGTK:
	"""This is an Hello World GTK application"""

	def __init__(self):
		#Set the Glade file
		self.gladefile = "pyhelloworld2.glade"
		self.wTree = gtk.glade.XML(self.gladefile) 
		
		#Create our dictionay and connect it
		dic = { "on_btnHelloWorld_clicked" : self.btnHelloWorld_clicked}
		self.wTree.signal_autoconnect(dic)
	def btnHelloWorld_clicked(self, widget):
		print "hallo"

if __name__ == "__main__":
	hwg = HellowWorldGTK()
	gtk.main()

Die dazugehörige Glade-file pyhelloworld2.glade:

Code: Alles auswählen

<?xml version="1.0"?>
<interface>
  <requires lib="gtk+" version="2.16"/>
  <!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="MainWindow">
    <property name="title" translatable="yes">Hello World!</property>
    <child>
      <object class="GtkVBox" id="vbox1">
        <property name="visible">True</property>
        <child>
          <object class="GtkLabel" id="label1">
            <property name="visible">True</property>
            <property name="label" translatable="yes">label</property>
          </object>
          <packing>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="btnHelloWorld">
            <property name="label" translatable="yes">Click me!</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
          </object>
          <packing>
            <property name="position">1</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>
Ich weiß einfach nicht, was ich falsch gemacht habe.
Danke für eure Hilfe!
Mein OS: Ubuntu 10.04
julianibus
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du musst noch auf dem ``gtk.Window``-Objekt ``show_all()`` aufrufen, damit die Widgets überhaupt erst sichtbar sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
julianibus
User
Beiträge: 16
Registriert: Montag 21. Juni 2010, 13:04
Wohnort: Aschaffenburg
Kontaktdaten:

Was müsste ich dafür bei meinem Code abändern bzw was davon ist das gtk.Window Objekt?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, das Window-Objekt musst du aus deinem ``self.wTree`` (übrigens: ein schlechter Name) rausziehen, das geht mit ``self.wTree.get_widget("id-deines-window")``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Deine Tutorial scheint außerdem reichlich alt, das folgende ist ziemlich aktuell und sieht auf den ersten Blick recht hilfreich aus: http://www.florian-diesch.de/doc/python ... de/online/
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Antworten