Skip to main content

A Custom Jupyter Widget Library

Project description

Interactive Turtle

Build Status codecov

A custom Jupyter widget for interactive turtle.

Installation

You can install using pip:

pip install iturtle

Here is the suggested conda environment:

conda create -n turtle -c conda-forge python=3.10 jupyterlab=3.5

Usage

Logo is an educational programming language, designed in 1967 by Wally Feurzeig, Seymour Papert, and Cynthia Solomon. Logo is not an acronym: the name was coined by Feurzeig while he was at Bolt, Beranek and Newman, and derives from the Greek logos, meaning word or thought.

Interactive Turtle is an implementation of Logo programming language as a Jupyter Widget for Jupyter Lab. Interactive Turtle is a popular way for introducing programming to kids and beginners.

Imagine a robotic turtle starting at the middle of the coordinate plane. After an from iturtle import Turtle and creating instance t = Turtle(), give it the command t.forward(15), and it moves 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command t.right(25), and it rotates in-place 25 degrees clockwise.

By combining together these and similar commands, intricate shapes and pictures can easily be drawn.

For example, intricate shapes can be drawn by repeating simple moves:

from iturtle import Turtle

turtle = Turtle()
turtle.pencolor("gold")

for i in range(36):
    turtle.forward(300)
    turtle.left(170)

Please check the following samples:

Currently Interactive Turtle supports these methods:

Turtle motion

home()

Move turtle to the origin – by default the middle of the coordinate plane – and set its heading to its start-orientation which is to the right (east).

turtle.home()

forward() or fd()

Move the turtle forward by the specified distance, in the direction the turtle is headed.

turtle.forward(20)

backward() or bk()

Move the turtle backward by the specified distance, in the direction the turtle is headed.

turtle.backward(20)

left() or lt()

Turn turtle left by angle units. Units are by default degrees.

turtle.left(90)

right() or rt()

Turn turtle right by angle units. Units are by default degrees.

turtle.right(90)

speed()

Set the turtle’s speed to an integer value in the range 0..10.

Speeds from 1 to 10 enforce increasingly faster animation of line drawing and turtle turning.

turtle.speed(1)

Pen control

penup() or pu()

Pull the pen up – no drawing when moving.

turtle.penup()

pendown() or pd()

Pull the pen down – drawing when moving.

turtle.pendown()

pencolor()

Set the color of the pen.

You can set pen color to color string, which is a color specification string, such as "red", "yellow", or "#33cc8c".

turtle.pencolor("red")

You can also set pen color to the RGB color represented by r, g, and b. Each of r, g, and b must be in the range 0..255.

turtle.pencolor(255, 255, 255)

bgcolor()

Set background color of the turtle canvas.

You can set background color to color string, which is a color specification string, such as "red", "yellow", or "#33cc8c".

turtle.bgcolor("black")

goto()

Move turtle to an absolute position. If the pen is down, draw line. Do not change the turtle’s orientation.

turtle.goto(10, 10)

teleport()

Move turtle to an absolute position. Unlike goto(x, y), a line will not be drawn. The turtle's orientation does not change.

turtle.teleport(20, 30)

Development Installation

Create a dev environment:

conda env create -f environment.yml

Install the python. This will also build the TS package.

pip install -e ".[test, examples]"

When developing your extensions, you need to manually enable your extensions with the lab frontend. For lab, this is done by the command:

jupyter labextension develop --overwrite .
jlpm run build

How to see your changes

If you use JupyterLab to develop then you can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the widget.

Watch the source directory in one terminal, automatically rebuilding when needed:

jlpm run watch

Run JupyterLab in another terminal:

jupyter lab --no-browser

After a change wait for the build to finish and then refresh your browser and the changes should take effect.

If you make a change to the python code then you will need to restart the notebook kernel to have it take effect.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iturtle-1.0.11.tar.gz (1.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iturtle-1.0.11-py2.py3-none-any.whl (918.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file iturtle-1.0.11.tar.gz.

File metadata

  • Download URL: iturtle-1.0.11.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for iturtle-1.0.11.tar.gz
Algorithm Hash digest
SHA256 267ef014a2c8e97bd8427d6ef8f2a0e22ae32c21f08efcc33e17cc068b0ae483
MD5 c3835ea2ff0ec0a625dd63edfd152bad
BLAKE2b-256 868d230bffceef2bc0e2ee5cf0bfcffc88a6c7066b18acc3cf4d047849a60e59

See more details on using hashes here.

File details

Details for the file iturtle-1.0.11-py2.py3-none-any.whl.

File metadata

  • Download URL: iturtle-1.0.11-py2.py3-none-any.whl
  • Upload date:
  • Size: 918.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for iturtle-1.0.11-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 56a2c2fd8b4de7f64a0961082ac4299633c4cbf75a382edcf75cdaeabc0d22d9
MD5 441241245a6b4a34df4f6d47512689bb
BLAKE2b-256 637e5f8c4a2155a6b13fa817f4c8725348308878c717fa4033a739a4cfdcf2d1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page