2 Fragen

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Hallo,
wie bekomme ich mit GTK einen Modalen Dialog erstellt?
Also z.B. Als Fehlermeldung oder beim Programm beenden.
Das mit dem gtk_message_dialog will bei mir nicht. Bzw. ich mach da irgendwas falsch.

Und gleich noch die 2 Frage.
Wie kann ich ein "Kind-Fenster" schließen ohne das Hauptfenster zu zerstören?

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

Damaskus hat geschrieben:wie bekomme ich mit GTK einen Modalen Dialog erstellt?
Also z.B. Als Fehlermeldung oder beim Programm beenden.
Das mit dem gtk_message_dialog will bei mir nicht. Bzw. ich mach da irgendwas falsch.
Das geht ganz einfach. Ist aber auch in der PyGTK Demo (in etwas anderer Form) enthalten.

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import gtk

def show(widget, parent):
    d = gtk.Dialog("Title", parent=w, buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
            gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
    result = d.run()
    if result == gtk.RESPONSE_CANCEL:
        gtk.main_quit()
    d.destroy()

w = gtk.Window()
b = gtk.Button('Show')
b.connect('clicked', show, w)
w.add(b)
w.show_all()

gtk.main()
Damaskus hat geschrieben:Und gleich noch die 2 Frage.
Wie kann ich ein "Kind-Fenster" schließen ohne das Hauptfenster zu zerstören?
Schon etwas komplizierter, aber immer noch lösbar:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import gtk

class BadWindows(object):
    windowopen = 1

    def exitgtk(self, widget, event):
        self.windowopen -= 1
        if self.windowopen == 1:
            # the last open window
            gtk.main_quit()

    def newwin(self, widget):
        self.createwin()

    def createwin(self):
        w = gtk.Window()
        w.connect('delete_event', self.exitgtk)
        b = gtk.Button('Newwin')
        b.connect('clicked', self.newwin)
        w.add(b)
        w.show_all()
        self.windowopen += 1
        return w

def main():
    bw = BadWindows()
    w = bw.createwin()
    gtk.main()

if __name__ == '__main__':
    main()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Damaskus hat geschrieben: wie bekomme ich mit GTK einen Modalen Dialog erstellt?
Hi Damaskus!

Dazu möchte ich noch diesen Link beisteuern.
http://www.pygtk.org/pygtk2reference/cl ... ialog--run

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Thx für die Hilfe so klappt es.

Ich dachte irgendwie das mit dem Schließen geht einfacher.
Trotzdem Danke
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Hmm...

Wie bekomme ich eigentlich den Dialog mit Inhalt gefüllt?
Ich habs schon mit X Varianten probiert aber nix klappt.

Hier einfach mal der Codefetzen...

Code: Alles auswählen

  def errordialog(widget):
    dialog = gtk.Dialog("rock mich", None, gtk.DIALOG_MODAL, (gtk.STOCK_OK, gtk.RESPONSE_OK))
    vbox = gtk.VBox(False, 8)
    stock = gtk.image_new_from_stock(gtk.STOCK_DIALOG_QUESTION, gtk.ICON_SIZE_DIALOG)
    label = gtk.Label("Text")
    vbox.pack_start(stock, True, True, 0)
    #vbox.pack_start(label, False, 0)
    gtk.Dialog.pack_start(vbox, True, True, 0)
    #vbox = gtk.VBox(False, 0)
    #vbox.add(hbox)
    #show_all()
    
    dialog.run()
    dialog.destroy()
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Damaskus hat geschrieben:Wie bekomme ich eigentlich den Dialog mit Inhalt gefüllt?
Ich habs schon mit X Varianten probiert aber nix klappt.
Ich habe den Code aus dem dialogs.py Beispiel genommen, das solltest du dir mal ansehen, ich habe keine Lust das Ding nochmal 1:1 zu posten ;) (Jedoch wenn es Probleme gibt, kannst du ruhig fragen).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
XT@ngel als Gast

Hallo, welche art von Inhalt meinst du?

Du kannst auch einen blick auf gtk.MessageDialog werfen. http://www.pygtk.org/pygtk2reference/cl ... ialog.html
Dieser erbt von gtk.Dialog. Zum formatieren des Textes kannt du Pango Markup benutzen.

Alternativ kannst du auch das Attribut "label" durch dein eigenes austauschen.

MfG
Andreas
Antworten