2 Fragen

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

2 Fragen

Beitragvon Damaskus » Freitag 24. Juni 2005, 14:14

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: 2 Fragen

Beitragvon Leonidas » Freitag 24. Juni 2005, 17:15

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 Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: 2 Fragen

Beitragvon gerold » Freitag 24. Juni 2005, 18:55

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: 890
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Beitragvon Damaskus » Sonntag 26. Juni 2005, 19:10

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: 890
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Beitragvon Damaskus » Sonntag 26. Juni 2005, 23:21

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()
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 27. Juni 2005, 12:23

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 Modvoice
XT@ngel als Gast

Beitragvon XT@ngel als Gast » Montag 27. Juni 2005, 15:05

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder