Seite 1 von 1

callit in Tkinter' after erhält unerwartet Argumente

Verfasst: Dienstag 13. Januar 2009, 11:06
von pysq
Hallo.

ich verwende after etwa so:

Code: Alles auswählen

self.after(0, methodenname, *largs)
das ganze geschieht in einer von Tk abgeleiteten Klasse. largs ist eine Liste von Argumenten, die Klassenmethode methodename benötigt.
Der Aufruf hat eigentlich immer (wenigstens 100 Tests) einwandfrei funktioniert.
Jetzt kam aber plötzlich ein komischer Fehler:


Tkinter after Methode von _Misc

Code: Alles auswählen

    def after(self, ms, func=None, *args):
        """Call function once after given time.

        MS specifies the time in milliseconds. FUNC gives the
        function which shall be called. Additional parameters
        are given as parameters to the function call.  Return
        identifier to cancel scheduling with after_cancel."""
        if not func:
            # I'd rather use time.sleep(ms*0.001)
            self.tk.call('after', ms)
        else:
            def callit():
                try:
                    func(*args)
                finally:
                    try:
                        self.deletecommand(name)
                    except TclError:
                        pass
            name = self._register(callit)
            return self.tk.call('after', ms, name)
die lokale Funktion callit hat plötzlich 2 Argumente übergeben bekommen. Dies führt natürlich zu einem Fehler, da diese keine Argumente braucht.

In allen folgenden Aufrufen von after mit irgendwelchen Klassenmethoden, kam stets der gleich Fehler wieder.

Hatte jemand schon mal ein ähnliches Problem, oder ist das ein Bug in Tkinter?

mfg pysq

Verfasst: Dienstag 13. Januar 2009, 11:07
von pysq
achja, ich habe zurzeit noch Python 2.5.