TclError: unknown option "pyimage2"

Fragen zu Tkinter.
Antworten
Arachnophobius
User
Beiträge: 23
Registriert: Mittwoch 7. April 2010, 11:51

Bonjour werte Pythoncommunity,

die im Titel genannte Fehlermeldung habe ich ausgeworfen bekommen,
als ich ein wenig mit Tkinter gebastelt habe. Allerdings finde ich
nach einer Google Suche mit dem exakt selben Fehler wie im Titel
nichts einleuchtendes.

Hier mal der Testcode:

Code: Alles auswählen

import Tkinter as mTk
import Tkconstants as mTkC

class MainFrame(mTk.Frame):
    def __init__(self, root_window):
        mTk.Frame.__init__(self, root_window)
        self.root_window = root_window
        self._toplevel = self.root_window.winfo_toplevel()
        self._toplevel.title("Pythonic Media Editor")
        self.grid(sticky="news")
        # Rescaling part
        self._toplevel.rowconfigure(0,weight=1)
        self._toplevel.columnconfigure(0,weight=1)
        self.rowconfigure(0,weight=1)
        self.columnconfigure(0,weight=1)
        # end rescaling
        self.setup_widgets()
        
    def setup_widgets(self):
        self.canvas = mTk.Canvas(self,width=200,height=200,relief=mTkC.GROOVE,
                                 borderwidth=2)
        self.canvas.grid()
        self.test_image = get_sample()
        self.canvas.create_image(16,16,self.test_image)


# Resource specific stuff

def get_sample():
    original = mTk.PhotoImage(file="normal1.gif")
    sample = mTk.PhotoImage(width=16,height=16)
    for x in range(16):
        for y in range(16):
            rgb = original.get(x=x,y=y)
            rgb = rgb.split(" ")
            sample.put(data="#%02x%02x%02x"%(int(rgb[0]),int(rgb[1]),int(rgb[2])),to=(x,y))
    return sample
    
def main():
    root = mTk.Tk()
    application = MainFrame(root)
    root.mainloop()

if __name__ == '__main__':
    main()
Verwendet wird Python 2.7.4,
das Ziel war/ist es einen speziellen
Ausschnitt eines beliebigen Bildes
zu extrahieren.

Der komplette Exception Code wäre folgender:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Python_dev/image_test.py", line 41, in <module>
    application = MainFrame(root)
  File "C:/Python_dev/image_test.py", line 17, in __init__
    self.setup_widgets()
  File "C:/Python_dev/image_test.py", line 24, in setup_widgets
    self.canvas.create_image(16,16,self.test_image)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 2260, in create_image
    return self._create('image', args, kw)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 2251, in _create
    *(args + self._options(cnf, kw))))
TclError: unknown option "pyimage2"
Ich denke das es nichts mit dem Bild zu tun hat.
Schließlich hat die Meldung nichts direkt mit dem Bildformat zu
tun. Aber meine zweite Einschätzung das es ein interner Fehler
ist hielt ich auch für albern, schließlich löst man sowas nicht
einfach so aus.

Hoffe jemand weiß Rat.

Gruß, Arach
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Die `Canvas` Methode `create_image` erwartet an der Stelle, an der Du ein Bild übergibst das `anchor` Attribut, das z. B. `NW` sein kann. Wenn Du `anchor` nicht explizit setzen möchtest, dann musst Du den Aufruf so gestalten:

Code: Alles auswählen

def setup_widgets(self):
    ...
    self.canvas.create_image(16, 16, image=self.test_image)
Mehr dazu siehe auch hier...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Arachnophobius
User
Beiträge: 23
Registriert: Mittwoch 7. April 2010, 11:51

Verdammtes Anchor Attribut.
Das habe ich glatt übersehen, ok danke für die flotte Antwort.

Gruß, Arach
Antworten