ich versuche seit geraumer Zeit ein Objekt (Button) von einer eigenen Klasse zu erstellen und komme einfach nicht weiter. Im Netz habe ich schon geschaut, aber leider keinen wirklichen Ansatz für mich gefunden und hoffe auf Eure Hilfe. Zu Testzwecken wurde die eigene Button-Klasse total abgespeckt (s. u.). Ziel meiner Bemühungen ist, dass mehrere Buttons per Thread erstellt werden und in ein Frame kommen. Wenn die Buttons direkt in der Funktion erzeugt werden (main), die der Thread aufruft, dann funktioniert es. Verwende ich aber meine Klasse, dann... leider nicht. Ich habe auch schon versucht einige Variablen nachzubilden, aber das hat auch nicht weitergeholfen.
Beim Ausführen des Hauptprogramms erhalte ich folgende Fehlermeldung (siehe unten).
Ich verwende Python 3.3 und tk.
Vielen Dank im voraus.
Viele Grüße,
Volker
Code: Alles auswählen
pydev debugger: starting
Unhandled exception in thread started by <__main__.NewThreadStartup object at 0x00000000032F4B38>
Traceback (most recent call last):
File "P:\Program\eclipse-SDK-4.3-win32\eclipse\plugins\org.python.pydev_2.8.1.2013072611\pysrc\pydevd.py", line 207, in __call__
return self.original_func(*args, **kwargs)
File "P:\Program\workspace\Photo-Management\preview.py", line 106, in prepairePreView
ThumbnailView.create_window(posNewThumbnail, 0, anchor=tkinter.NW, window=btn2)
File "C:\Program Files\Python33\lib\tkinter\__init__.py", line 2302, in create_window
return self._create('window', args, kw)
File "C:\Program Files\Python33\lib\tkinter\__init__.py", line 2275, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: bad window path name ".52563920.53431768.53431992"
Code: Alles auswählen
import tkinter, pickle
class MyButton(tkinter.Button):
'''
classdocs
'''
def __init__(self, master):
'''
Constructor
'''
self._tclCommands = []
self._w = "{}.{}".format(master,id(self))
self._name = str(id(self))
self.master = master
--------
Im main wird folgendes aufgerufen...
btn2 = MyButton(ThumbnailView) #ThumbnailView ist der Ziel-Frame
ThumbnailView.create_window(posNewThumbnail, 0, anchor=tkinter.NW, window=btn2)