Seite 1 von 1

2 Fragen

Verfasst: Freitag 24. Juni 2005, 14:14
von Damaskus
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

Re: 2 Fragen

Verfasst: Freitag 24. Juni 2005, 17:15
von Leonidas
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()

Re: 2 Fragen

Verfasst: Freitag 24. Juni 2005, 18:55
von gerold
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
:-)

Verfasst: Sonntag 26. Juni 2005, 19:10
von Damaskus
Thx für die Hilfe so klappt es.

Ich dachte irgendwie das mit dem Schließen geht einfacher.
Trotzdem Danke

Verfasst: Sonntag 26. Juni 2005, 23:21
von Damaskus
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()

Verfasst: Montag 27. Juni 2005, 12:23
von Leonidas
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).

Verfasst: Montag 27. Juni 2005, 15:05
von 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