2016-07-27 9 views
2

Ich mache eine Tkiner-Anwendung, die einem Benutzer eine Seite mit einigen grundlegenden Informationen und einem Bild zeigt, bevor er auf eine Schaltfläche klicken kann, um Live-Bitcoin-Preisdaten anzuzeigen. Allerdings, wenn ich das Bild auf die ‚Start-up‘ Seite hinzugefügt, habe ich diesen Fehler aus meiner IDE:Wie behebe ich das "Bild" pyimage10 "existiert nicht" Fehler, und warum passiert es?

BTC_img_label = tk.Label(self, image=BTC_img) 
File "C:\Python34\lib\tkinter\__init__.py", line 2609, in __init__ 
Widget.__init__(self, master, 'label', cnf, kw) 
File "C:\Python34\lib\tkinter\__init__.py", line 2127, in __init__ 
(widgetName, self._w) + extra + self._options(cnf)) 
_tkinter.TclError: image "pyimage10" doesn't exist 

Ich glaube, dass dies die Codezeilen, die meinen Fehler verursachen (sie die gleichen Linien sind hinzufügen, dass das Bild auf der Seite ‚Start-up‘):

BTC_img = tk.PhotoImage(file='bitcoin.png') 
BTC_img_label = tk.Label(self, image=BTC_img) 
BTC_img_label.image = BTC_img 
BTC_img_label.grid(row=2, column=0) 

ich habe auch bemerkt, dass das Symbol, das ich gesetzt zeigt nicht in den GUI-Fenstern, wenn das Programm ausgeführt wird, werden nur das Standard Tkinter Feder-Symbol. Hier ist mein Symbol Einstellcode, wenn jemand interessiert ist (obwohl ich ziemlich sicher bin, es ist nicht mein Fehler verursacht):

tk.Tk.iconbitmap(self, default='main.ico') 

Und ja, für jemand fragen, habe ich Import tkinter als tk, so dass nicht mein Fehler . Wenn jemand mir auch sagen könnte, warum dieser Fehler passiert, wäre ich sehr interessiert: Ich habe nicht viele andere Beispiele dafür gesehen, und die, die ich gesehen habe, haben mein Icon-Problem nicht erwähnt. Hoffe, dass jemand das herausfinden kann!

Antwort

0

Sie können kein .png Format mit tkinter laden. Sie müssen vielmehr die PIL Bibliothek dafür verwenden:

import PIL 

image = PIL.Image.open("bitcoin.png") 
BTC_img = PIL.ImageTk.PhotoImage(image) 
BTC_img_label = tk.Label(self, image=BTC_img) 
BTC_img_label.image = BTC_img 
BTC_img_label.grid(row=2, column=0) 

EDIT:

Bitte erstellen Sie eine test.py Datei und führen Sie diesen EXACT Code:

import tkinter as tk 
from PIL import Image, ImageTk 

root = tk.Tk()  
image = Image.open("bitcoin.png") 
photo = ImageTk.PhotoImage(image) 
label = tk.Label(root, image=photo) 
label.image = photo 
label.grid(row=2, column=0) 
#Start the program 
root.mainloop() 

Sag mir, wenn Sie bekommen ein Fehler oder nicht.

+0

Haben Sie eine Idee, warum mein gewähltes Symbol nicht angezeigt wurde? –

+0

Ich bekomme immer noch den gleichen Fehler, obwohl ich die Image- und ImageTk-Module von PIL verwendet habe, wie Sie es vorgeschlagen haben. –

+0

* Ich bekomme immer noch den gleichen Fehler, * Sind Sie sicher? Hast du den richtigen Weg zu 'bitcoin.png' angegeben? Bitte lesen Sie erneut die Fehlermeldung, denn selbst wenn es gleich ist, muss es ** eine andere Codezeile betreffen, nicht die, die sich auf "BTC_img_label" bezieht. –

0

Ich hatte das gleiche Problem. Das Problem lag beim Importieren von matplotlib.pyplot in dasselbe Programm oder in eine andere py-Datei, aus der Sie Definitionen importieren. Verwenden Sie Canvas für Ihre Plots stattdessen