2017-04-13 2 views
0

Ich muss Dateien: eine heißt Kurve, und die andere Haupt. Im Hauptfenster versuche ich, ein Knopffenster zu öffnen, wenn die Taste gedrückt wird. Es fängt an, etwas in der Kurve mit Turtle zu zeichnen. Dies ist das vereinfachte Skript:Schildkröte kollidiert mit Tkinter

Haupt:

import tkinter 

    master = tkinter.Toplevel() 

    def callback(): 
     print("click!") 
     master.withdraw() 
     b.quit() 
     import curve 

    b = tkinter.Button(master, text="OK", command=callback) 
    b.pack() 
    tkinter.mainloop() 

Kurve:

import turtle 

    turtle.bgpic("somefile.gif") 
    #do some other stuff 

aber wenn ich diese laufen bekomme ich diesen Fehler:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python34\lib\tkinter\__init__.py", line 1482, in __call__ 
    return self.func(*args) 
    File "C:/Users/MYNAME/PycharmProjects/hilbert/main.py", line 7, in callback 
    import curve 
    File "C:\Users\MYNAME\PycharmProjects\hilbert\curve.py", line 3, in <module> 
    turtle.bgpic("images/processed.gif") 
    File "<string>", line 1, in bgpic 
    File "C:\Python34\lib\turtle.py", line 1474, in bgpic 
    self._setbgpic(self._bgpic, self._bgpics[picname]) 
    File "C:\Python34\lib\turtle.py", line 737, in _setbgpic 
    self.cv.itemconfig(item, image=image) 
    File "<string>", line 1, in itemconfig 
    File "C:\Python34\lib\tkinter\__init__.py", line 2380, in itemconfigure 
    return self._configure(('itemconfigure', tagOrId), cnf, kw) 
    File "C:\Python34\lib\tkinter\__init__.py", line 1261, in _configure 
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) 
_tkinter.TclError: image "pyimage2" doesn't exist 
+0

Ich habe keine Ahnung, wie stll das funktioniert, aber ich habe es geschafft, meinen eigenen Code ohne das bgpic() arbeiten zu lassen. Außerdem: ich weiß, dass es mehr wie "root = tkinter.Tk()' 'root.withdraw()' 'master = tkinter.Topelevel (root)' 'master.protocol (" WM_DELETE_WINDOW ", root. zerstören) 'aber das funktioniert auch nicht –

Antwort

0

Da Schildkröte umgesetzt wird mit Tkinter, du fährst ein Drahtseilakt, wenn du die beiden mischt. Diese Nacharbeit des Codes scheint zu tun, was Sie beschreiben, einschließlich der bgpic() Aufruf:

main.py

import tkinter 
import turtle 

turtle.Screen() 
root = tkinter.Toplevel() 

def callback(): 
    print("click!") 
    root.withdraw() 
    b.quit() 
    import curve 

b = tkinter.Button(root, text="OK", command=callback) 
b.pack() 

tkinter.mainloop() 

curve.py

import turtle 

turtle.bgpic('somefile.gif') 

# do some other stuff 

turtle.circle(100) 

turtle.mainloop()