Python Forum
tkinter window and turtle window error - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: tkinter window and turtle window error (/thread-22156.html)



tkinter window and turtle window error - 1885 - Nov-01-2019

I have a simple tkinter menu example that opens a new window on click.
When the Turtle window is opened it works fine the first time.
But when closed and opened again.
I get the following error and the turtle does not draw.
I need to figure out how to remove the turtle on exit some how.

$ python menu1.py 
circle
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
  File "menu1.py", line 54, in turtle1
    t = turtle.Turtle()
  File "/usr/lib/python3.7/turtle.py", line 3816, in __init__
    visible=visible)
  File "/usr/lib/python3.7/turtle.py", line 2557, in __init__
    self._update()
  File "/usr/lib/python3.7/turtle.py", line 2660, in _update
    self._update_data()
  File "/usr/lib/python3.7/turtle.py", line 2646, in _update_data
    self.screen._incrementudc()
  File "/usr/lib/python3.7/turtle.py", line 1292, in _incrementudc
    raise Terminator
turtle.Terminator
Any ideas?

from tkinter import *
import turtle
root = Tk()

def circle(t,x,y):
	print("circle")
	t.down()
	t.color("#ff0000")
	for i in range (0,20):
		t.forward(10)
		t.rt(18)
		
def turtle1():
    x = 0; y = 0
    w = turtle.Screen()
    w.setup(1000, 700)
    w.clear()
    w.bgcolor("#ffffff")
    t = turtle.Turtle()
    circle(t,x,y)
    w.exitonclick()
   
def newWin1(): # new window definition
    newwin = Toplevel(root)
    display = Label(newwin, text="Window 1")
    display.pack()    

def newWin2(): # new window definition
    newwin = Toplevel(root)
    display = Label(newwin, text="Window 2")
    display.pack()    

button1 =Button(root, text ="Window 1", command =newWin1) 
button2 =Button(root, text ="Window 2", command =newWin2) 
button3 =Button(root, text ="Turtle Window", command =turtle1) 
button1.pack()
button2.pack()
button3.pack()

root.mainloop()



RE: tkinter window and turtle window error - nilamo - Nov-01-2019

Try turtle.reset(): https://docs.python.org/3/library/turtle.html#turtle.reset

I was able to close and re-open the window by calling reset before re-opening the window, so hopefully that helps.


RE: tkinter window and turtle window error - balenaucigasa - Nov-01-2019

from tkinter import *
import turtle

 
def circle(t,x,y):
    print("circle")
    t.down()
    t.color("#ff0000")
    for i in range (0,20):
        t.forward(10)
        t.rt(18)
         
def turtle1():
    try:
        turtle.TurtleScreen._RUNNING = True
        x = 0; y = 0
        w = turtle.Screen()
        w.setup(800, 700)
        w.title("Welcome to the turtle zoo!")
        w.clear()
        w.bgcolor("#ffffff")
        w.visible = True
        t = turtle.Turtle()
        circle(t,x,y)
        w.exitonclick()
    finally:
        turtle.Terminator()


def newWin1(): # new window definition
    newwin = Toplevel()
    display = Label(newwin, text="Window 1")
    display.pack()    
 
def newWin2(): # new window definition
    newwin = Toplevel()
    display = Label(newwin, text="Window 2")
    display.pack()    
 

def main():

    root = Tk()
    import sys
    print(sys.version)
    button1 =Button(root, text ="Window 1", command =newWin1) 
    button2 =Button(root, text ="Window 2", command =newWin2) 
    button3 =Button(root, text ="Turtle Window", command =turtle1) 
    button1.pack()
    button2.pack()
    button3.pack()

    root.mainloop()


if __name__ == '__main__':
    main()
windows 8.1 , python 3.7.4


RE: tkinter window and turtle window error - 1885 - Nov-02-2019

Thank You balenaucigasa and nilamo !
Both posts helped!