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 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

Schreibe einen Kommentar