callit in Tkinter' after erhält unerwartet Argumente

Fragen zu Tkinter.
Antworten
Benutzeravatar
pysq
User
Beiträge: 31
Registriert: Samstag 29. November 2008, 17:48

Dienstag 13. Januar 2009, 11:06

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
Benutzeravatar
pysq
User
Beiträge: 31
Registriert: Samstag 29. November 2008, 17:48

Dienstag 13. Januar 2009, 11:07

achja, ich habe zurzeit noch Python 2.5.
Antworten