Domanda

Ho un'app GUI Python funzionante, che intendo utilizzare sia su Windows che su Mac. La documentazione su Tkinter non è la migliore e google-fu mi ha deluso.

In breve, sto facendo:

c = Canvas(
    master=frame,
    width=settings.WINDOW_SIZE[0],
    height=settings.WINDOW_SIZE[1],
    background=settings.CANVAS_COLOUR
)
file = PhotoImage(file=os.path.join('path', 'to', 'gif'))
c.create_bitmap(position, image=file)
c.pack()
root.mainloop()

Se commento la riga create_bitmap, l'app si disegna bene. Se lo commento nuovamente, visualizzo il seguente errore:

_tkinter.TclError: opzione sconosciuta " -image "

Che è strano. Tkinter va bene, secondo i test di Python (cioè, importando _tkinter, Tkinter e facendo Tk () ). Da allora ho installato PIL contro la mia configurazione di Windows (XP SP3, Python 2.6) immaginando che stesse facendo un po 'di lavoro pesante a basso livello. Non sembra essere; Ricevo ancora l'errore di cui sopra.

L'intero stacktrace, escluso il codice che ho già incollato, è:

File "C:\Python26\lib\lib-tk\Tkinter.py", line 2153, in create_bitmap
return self._create('bitmap', args, kw)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2147, in _create
*(args + self._options(cnf, kw))))

Qualcuno in grado di far luce?

È stato utile?

Soluzione

Tk ha due tipi di grafica, bitmap e immagine. Le immagini sono disponibili in due versioni: bitmap e foto. Bitmap e immagini di tipo bitmap non sono la stessa cosa, il che porta alla confusione nei documenti. PhotoImage crea un'immagine di tipo foto e necessita di un oggetto immagine nell'area di disegno, quindi la soluzione è, come hai già concluso, utilizzare create_image.

Altri suggerimenti

Risposta breve: Non usare create_bitmap quando intendi usare create_image.

Il metodo create_bitmap () non ha un argomento image ; ha un argomento bitmap invece.

L'errore che si ottiene deriva dal fatto che in Tkinter, un interprete Tcl è in esecuzione incorporato nel processo Python e tutte le interazioni della GUI vanno avanti e indietro tra Python e Tcl; quindi, l'errore che si ottiene deriva dal fatto che Tcl risponde " Non conosco alcuna opzione -image nella chiamata .create_bitmap " ;.

In ogni caso, come ha detto Jeff, probabilmente vuoi il metodo create_image .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top