gtk.FileChooserDialog

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Hi,
ich probiere mich heute ein wenig an gtk - ich habe mir mal einiges an Tutorial durchgelesen und ein paar kleine Beispielprogramme angeschaut. Nun dachte ich ich könnte mal mit einem kleinen Script anfangen. Aber ich fürchte ich mache noch einige Anfängerfehler - Momentan hänge ich beim gtk.FileChooserDialog. Ich habe im Netz ein kleines snipped gefunden das auch so läuft:

Code: Alles auswählen

import gtk

dlg = gtk.FileChooserDialog(title='script suchen',
                                 action=gtk.FILE_CHOOSER_ACTION_OPEN,
                                 buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
                                          gtk.STOCK_OK, gtk.RESPONSE_OK))

result = dlg.run()
print result
print dlg.get_filename()
Nun wollte ich das ganze in einer kleinen Anwendung verwenden.

Code: Alles auswählen

class MyGUI(object):
    def __init__(self):
        self.builder = gtk.Builder()
        self.builder.add_from_file('GUI.glade')
        self.builder.connect_signals(self)

        self.win = self.builder.get_object('window1')

    def run(self):
        gtk.main()
   
    def quit(self):
        gtk.main_quit()
    
    def on_window1_delete_event(self, *args):
        self.quit()
         
    def on_button1_clicked(self, *args):
        dlg = gtk.FileChooserDialog(title='script suchen',
                                    action=gtk.FILE_CHOOSER_ACTION_OPEN,
                                    buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
                                             gtk.STOCK_OK, gtk.RESPONSE_OK))
        
        dlg.set_default_response(gtk.RESPONSE_OK)

        result = dlg.run()
        print result
        print dlg.get_filename()
wird nun duch klick auf einen Button in meiner GUI der Dialog aufgerufen wird dieser auch angezeigt. Allerdings funktionieren die Buttons (Abbrechen, OK) im Dialog nicht. Wenn ich die benutzte passiert nichts nur über das x zum schließen des Fensters kann ich den Dialog beenden.
Wenn ich allerdings die gesamte Methode ``on_button1_clicked`` in eine Funktion ausserhalb der Klasse ``MyGUI`` auslagere ist wieder alles in Ordnung und der Dialog funktionert wie gewohnt.
Ich bin ein wenig verwirrt - was mache ich hier falsch?
Antworten