Tkinter erstellen-Bild-Funktion Fehler (pyimage1 nicht vorhanden)
Ich bin ein student von der Außenwelt mit keine Vorherige Programmiererfahrung. Ich habe lernen Python als eine Erweiterung meiner math-Klasse. Ich habe versucht ein Programm erstellen, erzeugt Fraktale mit Tkinter. Der code funktioniert gut auf seine eigene, aber die Einbeziehung einer Nutzer-Eingabe-GUI veranlasst, eine Fehlermeldung zu geben:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
return self.func(*args)
File "C:\Python33\FractalGUI.py", line 74, in fractals
canvas.create_image((0, 0), image = img, state = "normal", anchor = tkinter.NW)
File "C:\Python33\lib\tkinter\__init__.py", line 2319, in create_image
return self._create('image', args, kw)
File "C:\Python33\lib\tkinter\__init__.py", line 2310, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: image "pyimage1" doesn't exist
Der code selbst ist unten. Bitte beachten Sie, dass der Fehler nicht angezeigt, bis der canvas.create_image
Zeile ausgeführt wird. Wenn es irgendwelche anderen Informationen, die ich zur Verfügung stellen kann, bitte lasst es mich wissen. Danke! 🙂
import tkinter
from tkinter import *
#Creates widgets for user input
class Imagespecs(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
self.y_axis()
self.x_axis()
#Y axis input
def y_axis(self):
self.instruction = Label(self,text = "How many pixels high do you want the image?")
self.instruction.grid(row = 8, column = 0, columnspan = 2, sticky = N)
self.height = Entry(self)
self.height.grid(row = 10, column = 1, sticky = E)
#Enters info to run fractal generation
self.submit_button = Button(self,text = "Submit", command = self.fractals)
self.submit_button.grid(row = 14, column = 2, sticky = E)
#X axis input
def x_axis(self):
self.instruction2 = Label(self,text = "How many pixels wide do you want the image?")
self.instruction2.grid(row = 4, column = 0, columnspan = 2, sticky = E)
self.width = Entry(self)
self.width.grid(row = 6, column = 1, sticky = E)
#generates fractal
def fractals(self):
#Replace non-input
content = self.width.get()
content2 = self.height.get()
if content == "":
content = 500
if content2 == "":
content2 = 500
#Create window specs
WIDTH = int(content2); HEIGHT = int(content)
xa = -2.0; xb = 1.0
ya = -1.5; yb = 1.5
maxIt = 256
window = Tk()
canvas = Canvas(window, width = WIDTH, height = HEIGHT, bg = "#000000")
img = PhotoImage(width = WIDTH, height = HEIGHT)
#The Newton-Raphson iteration
h = HEIGHT
for ky in range(HEIGHT):
print (h)
h = h - 1
for kx in range(WIDTH):
c = complex(xa + (xb - xa) * kx / WIDTH, ya + (yb - ya) * ky / HEIGHT)
z = complex(0.0, 0.0)
for i in range(maxIt):
z = z * z + c
if abs(z) >= 2.0:
break
rd = hex(i % 4 * 64)[2:].zfill(2)
gr = hex(i % 8 * 32)[2:].zfill(2)
bl = hex(i % 16 * 16)[2:].zfill(2)
img.put("#" + rd + gr + bl, (kx, ky))
canvas.create_image((0, 0), image = img, state = "normal", anchor = tkinter.NW)
#Run GUI
canvas.pack()
mainloop()
root = Tk()
root.title("Fractal GUI")
root.geometry("300x200")
app = Imagespecs(root)
root.mainloop()
Teil des Problems ist, dass Sie mehr als einmal-Instanz
Ok, vielen Dank! Ich werde überprüfen Sie die Einrückung. Kennen Sie einen Weg, das zu beheben das Tk-Problem? Inzwischen werde ich versuchen, es zu beheben, aber wenn du eine Lösung schon, werde ich dankbar sein. 🙂
Wenn Sie mehr als ein Fenster erstellen Sie Ihre ersten mit
Ok, danke! 🙂 Die Fenster sind sowohl anfangs-als jetzt, aber es sagt mir, dass der Globale name tkinter ist nicht definiert... ich werde mehr arbeiten, nachdem ich fertig Bio-Klasse. Vielen Dank für Ihre Hilfe und Geduld für einen Anfänger.
Mögliche Duplikate von kann keine Verbindung Bild zu tkinter label
Tk
. Tkinter ist so ausgelegt, dass es immer nur exakt eine Instanz von Tk
. Dein code scheint auch zu haben, einige Einrückung Fehler.Ok, vielen Dank! Ich werde überprüfen Sie die Einrückung. Kennen Sie einen Weg, das zu beheben das Tk-Problem? Inzwischen werde ich versuchen, es zu beheben, aber wenn du eine Lösung schon, werde ich dankbar sein. 🙂
Wenn Sie mehr als ein Fenster erstellen Sie Ihre ersten mit
Tk
, dann den rest müssen Instanzen von Toplevel
.Ok, danke! 🙂 Die Fenster sind sowohl anfangs-als jetzt, aber es sagt mir, dass der Globale name tkinter ist nicht definiert... ich werde mehr arbeiten, nachdem ich fertig Bio-Klasse. Vielen Dank für Ihre Hilfe und Geduld für einen Anfänger.
Mögliche Duplikate von kann keine Verbindung Bild zu tkinter label
InformationsquelleAutor Silmarillion101 | 2014-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Versuch haben, und legen Sie den master:
Wenn Sie nicht legen Sie den master dann dieses Bild verwendet der erste
Tk()
geschaffen wird und wenn dasTk
ist gelöscht, es wird kein Bild angezeigt wird.Mir sagen, ob es funktioniert, ich bin zu raten.
InformationsquelleAutor User
Okay, ich danke für den input, Leute! Ich schaffte es, es zu beheben durch ändern der
window = Tk()
inwindow = Toplevel
- und einbauenanchor = tkinter.NW
zuanchor = NW
. Jetzt läuft es genau so, wie ich es vorgesehen. Am Ende der Eingabe-GUI! 😀InformationsquelleAutor Silmarillion101