#!/usr/bin/env python import PySimpleGUI as sg import turtle """ Demo showing how to integrate drawing on a Canvas using Turtle with PySimpleGUI The patern to follow: Create Window & Finalize Get the tkinter Canvas from the Canvas element Draw on the tkinter Canvas using turtle commands. Results are shown on the canvas immiedately after button press / drawing command """ layout = [[sg.Text('My layout')], [sg.Canvas(size=(800, 800), key='-canvas-')], [sg.Button('F'), sg.Button('B'), sg.Button('L'), sg.Button('R')], [sg.Button('Spiral'), sg.Button('Inside Out'), sg.Button('Circles')]] window = sg.Window('My new window', layout, finalize=True) canvas = window['-canvas-'].TKCanvas a_turtle = turtle.RawTurtle(canvas) a_turtle.pencolor("#ff0000") # Red a_turtle.penup() a_turtle.pendown() while True: # Event Loop event, values = window.read() if event is None: break if event == 'F': a_turtle.forward(100) elif event == 'B': a_turtle.back(100) elif event == 'L': a_turtle.left(90) elif event == 'R': a_turtle.right(90) elif event == 'Spiral': canvas.config(bg='light green') a_turtle.color("blue") def sqrfunc(size): for i in range(4): a_turtle.fd(size) a_turtle.left(90) size = size - 5 sqrfunc(146) sqrfunc(126) sqrfunc(106) sqrfunc(86) sqrfunc(66) sqrfunc(46) sqrfunc(26) elif event == 'Inside Out': canvas.config(bg="light green") a_turtle.color("blue") def sqrfunc(size): for i in range(4): a_turtle.fd(size) a_turtle.left(90) size = size + 5 sqrfunc(6) sqrfunc(26) sqrfunc(46) sqrfunc(66) sqrfunc(86) sqrfunc(106) sqrfunc(126) sqrfunc(146) elif event == 'Circles': a_turtle.speed(0) for i in range(400): a_turtle.circle(2 * i*.25) a_turtle.circle(-2 * i*.25) a_turtle.left(i) window.close()