furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Rysowanie w Turtle - Wstęp

WERSJA ROBOCZA WPISU

Wstęp

W przykładach nie stosuje from <modul> import * aby było widać, z jakich modułów pochodzą jakie funkcje. Z powodu nieczytelności import * jest niezalecane także przez dokument PEP 8 -- Style Guide for Python Code <https://www.python.org/dev/peps/pep-0008/) (wyszukaj `import *>`__.

W turle niektóre funkcje mają także skrócone nazwy - przykładowo fd() jako skrót dla forward(). Dla czytelności przykładów stosuje jednak tylko pełne nazwy. Przy pisaniu na własny użytek stosował bym jednak wersje skrócone bo to jednak mniej pisania.

O przykładach dostarczonych wraz z Pythonem: Rysowania w Turtle - przykłady dostarczane z Pythonem

Wartości ujemne

turtle pozwala na ujemne wartości w forward()/backward() i wtedy rysuje w przeciwną stronę.

forward(-100) daje to samo co backward(100).

turtle pozwala też na ujemne wartości w left() / rigth() i wtedy skręca w przeciwną stronę.

left(-45) daje to samo co right(45).

Można też stosować kąty większe niż 360 - bo 360+X stopni to to samo co X stopni.

left(360 + X) daje to samo co left(X). I tak samo jest z right().

mainloop() / done()

Zamykanie przez kliknięcie przycisku zamykającego okno [X]

turtle.mainloop()

Zamykanie przez kliknięcie w dowolnym miejscu okna

turtle.exitonclick()

odpowiednik

turtle.onscreenclick(lambda x, y: turtle.bye())
turtle.mainloop()

Kod źródłowy

Moduł turtle jest napisany w czystym Pythone - bez żadnych bibliotek w C - więc można zobaczyć jego kod.

import turtle

print(turtle.__file__)

Powyższe wyświetla ścieżkę do pliku z kodem źródłowym modułu turtle - u mnie to jest /usr/lib/python3.7/turtle.py - i można to otworzyć w dowolnym edytorze tekstu lub IDE.

Pod Linux można nawet otworzyć to wprost ze skryptu w domyślnym programie

import turtle
import os

os.system('xdg-open ' + turtle.__file__)

https://stackoverflow.com/a/435669/1832058

import subprocess
import os

if sys.platform.startswith('darwin'):
    subprocess.call(('open', filepath))
elif os.name == 'nt': # For Windows
    os.startfile(filepath)
elif os.name == 'posix': # For Linux, Mac, etc.
    subprocess.call(('xdg-open', filepath))
Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury