FileChooserDialog in GTK-Anwendung
Verfasst: Donnerstag 28. Februar 2008, 07:18
Hallo,
da ich momentan nicht weiterkomme, wage ich es einmal, hier meine Anfängerfrage zu stellen:
Aufgabenstellung ist simpel: nach Auswahl eines Menüpunktes soll ein Dateiauswahldialog erscheinen und danach die Datei geöffnet werden. Mein Source-Code dazu:
Die Methode execute wird an anderer Stelle mit dem activate-Signal eines MenuItems verbunden. Das Ganze läuft in einer übergeordneten Anwenung, die mit gtk.main() gestartet wird.
Das klappt auch insofern, als der FileChooser geöffnet wird. Allerdings schließt er sich nicht, wenn man auf Ok oder Abbrechen klickt. Das ist mein Problem.
Führe ich das Code-Fragment in einem eigenen kleinen Programm/Skript aus, ohne dass darin vorher gtk.main() aufgerufen wird, funktioniert das bestens.
Wo ist mein Denkfehler?
Danke, Jochen
da ich momentan nicht weiterkomme, wage ich es einmal, hier meine Anfängerfrage zu stellen:
Aufgabenstellung ist simpel: nach Auswahl eines Menüpunktes soll ein Dateiauswahldialog erscheinen und danach die Datei geöffnet werden. Mein Source-Code dazu:
Code: Alles auswählen
def execute(self, widget, data = None):
"""
executes the command. This method has to be overwritten
in sublclasses.
Parameters:
- widget: widget that triggers the command
- data: additional data
"""
chooser = gtk.FileChooserDialog("Open", self.getApplication().getMainWindow())
chooser.set_default_response(gtk.RESPONSE_OK)
chooser.add_button( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
chooser.add_button( gtk.STOCK_OPEN, gtk.RESPONSE_OK)
filter = gtk.FileFilter()
filter.set_name("File")
filter.add_pattern("*.xml")
chooser.add_filter(filter)
response = chooser.run()
if response == gtk.RESPONSE_OK:
print chooser.get_filename(), 'selected'
Das klappt auch insofern, als der FileChooser geöffnet wird. Allerdings schließt er sich nicht, wenn man auf Ok oder Abbrechen klickt. Das ist mein Problem.
Führe ich das Code-Fragment in einem eigenen kleinen Programm/Skript aus, ohne dass darin vorher gtk.main() aufgerufen wird, funktioniert das bestens.
Wo ist mein Denkfehler?
Danke, Jochen