[Python-de] [PyGTK] Widget gibt keine Antwort mehr

"Sebastian \"Marduk\" Pölsterl" marduk at k-d-w.org
Fre Sep 17 18:24:48 CEST 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo!

Ich habe folgendes Problem:
Über ein Formular gibt man Daten ein, die durch Klick auf einen
OK-Button abgeschickt werden. Dann wird anhand der Überschrift
überprüft, ob ein Eintrag schon existiert. Existiert ein Eintrag mit der
Überschift wird ein Hinweis-Dialog mit einem OK Button angezeigt. Ein
klick auf den OK Button schließt die Warnung wie gewünscht.
Wenn ich aber jetzt die Überschrift in dem Formular Widget ändere, und
wieder auf OK zum eintragen klicke, tut sich nichts mehr, da das Widget
schon ein Signal verschickt hat.
Gebe ich beim ersten mal eine neue Überschrift auf, gibt ein Klick auf
den OK-Button das gewünschte Signal zurück.
Wie schaff ich das jetzt, dass ein weiterer Klick auf den OK-Button
trotzden ein Signal zurückgibt.

Aus der Klasse Dialog:
<source>
def form(self, parent, edit=False):
        self.tree_form = gtk.glade.XML("dict.glade", "dialog_form")
        self.widget_form = self.tree_form.get_widget("dialog_form")
        self.widget_form.set_transient_for(parent)

        #--- New - Entry ---#
        self.new_entry = self.tree_form.get_widget("new_entry")

        #--- New - TextView ---#
        self.buffer_new_textview = gtk.TextBuffer(None)

self.tree_form.get_widget("new_textview").set_buffer(self.buffer_new_textview)


        if (edit):
            self.widget_form.set_title(u"Eintrag ändern")
            self.new_entry.set_text(edit)
            self.new_entry.set_editable(gtk.FALSE)

            text = DB.fetch_details(self, edit)
            self.buffer_new_textview.set_text(text[0])

        return self.widget_form.run()

def message(self, parent, title, image, message):
        self.tree_message = gtk.glade.XML("dict.glade",
"dialog_message")
        self.widget_message =
self.tree_message.get_widget("dialog_message")
        self.widget_message.set_transient_for(parent)

        #--- Message - Title ---#
        self.widget_message.set_title(title)

        #--- Message - Label ---#
        self.message_label = self.tree_message.get_widget("message_label")
        self.message_label.set_text(message)

        #--- Message - Image ---#
        self.message_image = self.tree_message.get_widget("message_image")
        if (image == None):
            self.message_image.destroy()
        else:
            self.message_image.set_from_stock(image,
gtk.ICON_SIZE_DIALOG)

        return self.widget_message.run()
</source>

Aus der Hauptklasse (erbt Dialog Klasse):
<source>
def show_form(self):
        response = Dialog.form(self, self.widget_window)
        if (response == gtk.RESPONSE_OK):
            text =
self.buffer_new_textview.get_text(self.buffer_new_textview.get_start_iter(),
self.buffer_new_textview.get_end_iter())
            title = self.new_entry.get_text()

            if (DB.entry_exists(self, title)):
                self.message(self.widget_window, u"Fehler",
gtk.STOCK_DIALOG_ERROR, u"Eintrag bereits vorhanden")
                self.widget_message.destroy()
            else:
                DB.add(self, title, text)
                self.message(self.widget_window, u"Eintrag erfolgreich",
gtk.STOCK_DIALOG_INFO, u"Eintrag erfolgreich")
                self.widget_message.destroy()
                self.widget_form.destroy()
                self.show_count()
        else:
            self.widget_form.destroy()
</source>

Gruß
Sebastian Pölsterl
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFBSw/Q1ygZeJ3lLIcRAqxsAJ9IXt+n1kTlqeo92SAKB6BdsXb6IgCfSkHi
ODYDQ1KqZMUOsulYHTmf6K8=
=Tr+E
-----END PGP SIGNATURE-----