کتابخانه Turtle یک ماژول گرافیکی و از پیش نصبشده در پایتون است. این ماژول بومی مجازی برای رسم اشکال، تصاویر، بازیهای کوچک و پویانمایی در اختیار برنامهنویس میگذارد. برای دسترسی به آن نیازی به نصب پکیج جداگانه ندارید. تنها با فراخوانی Turtle در محیط پایتون، نشانهگری روی صفحه ظاهر میشود که دستورهای حرکتی را دریافت میکند و خطوط و نقشهای دلخواه شما را میکشد.

کار با ترتل پایتون روشی بصری و تعاملی برای شروع یادگیری پایتون است و به کودکان و بزرگسالان تازهکار کمک میکند تا مفاهیم پایه کدنویسی را در عمل درک کنند. نحوه راهاندازی محیط کار، جدول کامل دستورات حرکتی، کدهای آماده رسم اشکال هندسی و مدیریت رویدادهای کلیک ماوس را گامبهگام بررسی میکنیم.
کتابخانه Turtle در پایتون چیست و چه کاربردی دارد؟
این ابزار گرافیکی از زبان برنامهنویسی Logo الهام گرفته شده است. در Logo، نشانهگری به نام «لاکپشت» (Turtle) دستورهای ساده را دریافت میکند، روی صفحه حرکت میکند و همزمان با حرکت خود، الگوهای مختلفی میکشد. در آموزش برنامه نویسی، «کتابخانه» به مجموعهای از توابع و متدهای آماده گفته میشود که برای آسانتر و سریعتر کردن کدنویسی در دسترس توسعهدهندگان قرار میگیرد. کتابخانه Turtle نیز تمام متدهای لازم برای ترسیم گرافیکی را به صورت آماده فراهم کرده است.
مهمترین کاربردهای کتابخانه turtle در پایتون عبارتاند از:
- مشاهده فوری خروجی گرافیکی کدها و درک مستقیم اثر هر دستور
- ترسیم اشکال هندسی ساده، الگوهای مختلف و تصاویر
- نمایش نحوه عملکرد الگوریتمهای خاص و آموزش مفاهیم پایه توسط مربیان
- آموزش بازی سازی در قالب بازیهای کوچک (Mini-Games) و پویانمایی (Animation)
اجزای اصلی در برنامهنویسی با ترتل پایتون
محیط گرافیکی ترتل سه جزء اصلی دارد که در کنار هم کار ترسیم را انجام میدهند:
- Screen (صفحه): پنجرهای مجزا است که نقش بوم نقاشی را دارد. لاکپشت در فضای این پنجره حرکت میکند و تصویر میکشد.
- Turtle (لاکپشت): نشانهگر یا قلم روی صفحه نمایش است که با جابهجایی خود، خطوط و اشکال را رسم میکند.
- Commands (دستورات): مجموعه دستورالعملهایی است که برای حرکت، چرخش و کشیدن تصویر به لاکپشت داده میشود.

آموزش نصب کتابخانه Turtle در پایتون و راهاندازی محیط کار
برای استفاده از کتابخانه turtle در پایتون نیازی به دانلود یا نصب پکیج اضافه ندارید، زیرا Turtle یک کتابخانه درونی و از پیش نصبشده (Built-in / Pre-installed) است و بهصورت استاندارد همراه با پایتون روی سیستم قرار میگیرد.
برای شروع کدنویسی و آمادهسازی سیستم، کافی است این دو پیشنیاز را بررسی کنید:
- نسخه پایتون: مطمئن شوید که نسخه ۳ پایتون (Python ۳) یا بالاتر روی کامپیوتر شما نصب است. در غیر این صورت، میتوانید آن را از وبسایت اصلی پایتون دانلود کنید.
- محیط برنامهنویسی: کدها را میتوانید در محیطهایی مانند IDLE یا Jupyter Notebook بنویسید. اگر کار با این برنامهها برایتان راحت نیست، محیط REPL گزینه مناسبی برای اجرای دستورات است.
فراخوانی کتابخانه Turtle در پایتون ۳
در محیط کدنویسی REPL، ابتدا باید دستور زیر را بنویسید تا پایتون ۳ اجرا و محیط کار با آن باز شود. در برنامهای مثل Jupyter Notebook نیازی به اجرای این خط کد ندارید:
python3
سپس کتابخانه Turtle را با دستور import در پایتون وارد محیط برنامهنویسی کنید تا به توابع و متدهای طراحی آن دسترسی داشته باشید:
import turtle
استفاده از محیط مستقل PythonTurtle بدون نیاز به نصب پایتون
اگر پایتون را روی سیستم خود نصب نکردهاید، میتوانید از نرمافزار مستقل PythonTurtle استفاده کنید. این برنامه یک محیط یادگیری متنباز است که توسط Ram Rachum تحت لیسانس MIT توسعه یافته است. PythonTurtle بدون نیاز به نصب پایتون یا برنامه جانبی دیگری، مستقیم روی ویندوز اجرا میشود.
محیط PythonTurtle یک پوسته کامل پایتون، مشابه محیط IDLE، به همراه صفحه راهنمای مصور در اختیارتان میگذارد تا توابع پایتون را برای حرکت لاکپشت اجرا کنید. اگر پس از یادگیری مفاهیم پایه به دنبال مطالب پیشرفتهتر پایتون به شکل تعاملی و تحت وب هستید، میتوانید از وبسایت متنباز futurecoder.io استفاده کنید.
شروع کار با ترتل؛ ساخت صفحه نمایش و لاکپشت
Turtle یک کتابخانه گرافیکی است؛ بنابراین پس از فراخوانی آن، برای اجرای دستورات طراحی باید ابتدا پنجرهای جداگانه (Screen) ایجاد کنید. در پایتون از «متغیرها» برای ذخیره اطلاعات استفاده میشود و مقدار آنها در طول اجرای برنامه قابل تغییر است. به دلیل فراخوانی مکرر این متغیرها در طول کدنویسی، بهتر است بهجای نامهای طولانی و خستهکننده مانند my_turtle_screen_name یا نامهای تصادفی و نامفهوم مثل Joe، از حروف کوتاه و معنادار استفاده کنید.
برای باز کردن پنجره و ساخت لاکپشت، کد زیر را وارد کنید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
در این کد، پس از فراخوانی کتابخانه، ابتدا متغیر s که نامش از Screen گرفته شده است، مقداردهی اولیه میشود تا پنجره گرافیکی باز شود و بتوانید خروجی کد را در آن ببینید. در خط بعد، متغیر t که نام آن از Turtle گرفته شده است، ساخته میشود تا در سراسر برنامه برای هدایت نشانهگر کاربرد داشته باشد. این نشانهگر همان مثلث کوچک و سیاه در مرکز صفحه است.
در این محیط، صفحه نمایش مانند بوم نقاشی و لاکپشت مانند قلم عمل میکند. لاکپشت ویژگیهای قابل تغییری مانند اندازه، رنگ و سرعت دارد. این نشانهگر در جهت مشخصی حرکت میکند، مگر اینکه دستور دیگری به آن بدهید. قلم هنگام حرکت دو حالت دارد:
- بالا بودن قلم (Up): قلم روی بوم قرار ندارد و هنگام حرکت لاکپشت، خطی رسم نمیشود.
- پایین بودن قلم (Down): قلم روی بوم قرار دارد و همزمان با حرکت لاکپشت، خط رسم میشود.
جدول دستورات Turtle در پایتون
دستورات کتابخانه Turtle در پایتون شامل مجموعهای از متدها برای کنترل حرکت، وضعیت قلم و ویژگیهای ظاهری نشانهگر روی صفحه است. در جدول زیر، متدهای اصلی کتابخانه، پارامترهای ورودی و عملکرد هرکدام فهرست شدهاند:
| متد | پارامتر | توضیحات مربوط به متد |
|---|---|---|
| Turtle() | – | یک نشانهگر (لاکپشت) جدید ایجاد و برمیگرداند. |
| forward() | میزان | لاکپشت را با مقدار مشخص و رو به جلو حرکت میدهد. |
| backward() | میزان | لاکپشت را با مقدار مشخص به عقب حرکت میدهد. |
| right() | زاویه | لاکپشت را در جهت عقربههای ساعت میچرخاند. |
| left() | زاویه | لاکپشت را خلاف جهت عقربههای ساعت میچرخاند. |
| penup() | – | قلم طراحی را از روی صفحه برمیدارد. |
| pendown() | – | قلم طراحی را روی صفحه زمین میگذارد. |
| up() | – | قلم طراحی را از روی صفحه برمیدارد. |
| down() | – | قلم طراحی را روی صفحه زمین میگذارد. |
| color() | نام رنگ | رنگ قلم را تغییر میدهد. |
| fillcolor() | نام رنگ | رنگ قلمی که برای پر کردن چندضلعی استفاده میشود را تغییر میدهد. |
| heading() | – | عنوان (جهت) فعلی لاکپشت را برمیگرداند. |
| position() | – | موقعیت فعلی لاکپشت را برمیگرداند. |
| goto() | x, y | لاکپشت را به موقعیت مختصاتی x, y منتقل میکند. |
| begin_fill() | – | نقطه شروع یک چندضلعی پرشده را به خاطر میسپارد. |
| end_fill() | – | چندضلعی را میبندد و با رنگ فعلی پر میکند. |
| dot() | – | یک نقطه در موقعیت فعلی میگذارد. |
| stamp() | – | نشانی از شکل لاکپشت در مکان فعلی به جا میگذارد. |
| shape() | نام شکل | شکل نشانهگر را تغییر میدهد؛ پارامتر ورودی این متد را میتوان ‘arrow’، ‘classic’، ‘turtle’ یا ‘circle’ قرار داد. |
حرکت دادن لاکپشت و موقعیتیابی روی صفحه
اولین قدم عملی پس از شناخت متدهای پایه، هدایت قلم در جهتهای دلخواه روی بوم است. برای جابهجایی نشانهگر و رسم خطوط، میتوانید از دستورات حرکتی، زاویههای چرخش یا مختصات نقاط صفحه استفاده کنید.
دستورات حرکت در چهار جهت و فرمهای خلاصه
لاکپشت در چهار جهت جلو، عقب، چپ و راست حرکت میکند. متدهای .forward() و .backward() آن را در جهتی که به آن نگاه میکند، به جلو یا عقب میبرند. متدهای .right() و .left() نیز جهت لاکپشت را برحسب درجه به راست یا چپ تغییر میدهند:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.right(90)
t.forward(100)
t.left(90)
t.backward(100)
با اجرای این دستورات، لاکپشت ابتدا ۹۰ درجه به راست میچرخد و ۱۰۰ واحد به جلو میرود. سپس ۹۰ درجه به چپ میچرخد و ۱۰۰ واحد به عقب برمیگردد. برای کدنویسی سریعتر میتوانید شکل کوتاه این دستورات را به کار ببرید:
- t.rt(x) بهجای t.right(x)
- t.fd(x) بهجای t.forward(x)
- t.lt(x) بهجای t.left(x)
- t.bk(x) بهجای t.backward(x)

کار با مختصات صفحه و بازگشت به نقطه خانه (Home)
صفحه نمایش به چهار ربع تقسیم میشود. لاکپشت در شروع برنامه روی مختصات (۰,۰) قرار دارد؛ نقطهای که به آن «خانه» (Home) میگویند.
برای انتقال لاکپشت از موقعیت فعلی به نقطهای دلخواه و رسم خط تا آن مقصد، مختصات مورد نظر را در متد .goto() وارد کنید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.goto(100, 100)
برای بازگرداندن لاکپشت به نقطه شروع (۰,۰)، میتوانید از دستور میانبر t.home() استفاده کنید و نیازی به تایپ t.goto(۰,۰) ندارید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.goto(100, 100)
t.home()
کدهای ترتل پایتون برای رسم اشکال هندسی پایه
با ترکیب دستورات حرکتی نشانهگر یا استفاده از متدهای آماده کتابخانه، میتوانید اشکال هندسی پایه مانند چندضلعیها، دایره و نقطه را روی بوم رسم کنید.

کد رسم مربع (چندضلعی)
چندضلعیها از خطوط مستقیمی تشکیل شدهاند که در زاویههای مشخص به یکدیگر متصل میشوند. برای کشیدن مربع، کافی است حرکت ۱۰۰ واحدی رو به جلو و چرخش ۹۰ درجهای به راست را به ترتیب زیر تکرار کنید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.fd(100)
t.rt(90)
t.fd(100)
t.rt(90)
t.fd(100)
t.rt(90)
t.fd(100)

کد رسم دایره و نقطه
برای کشیدن دایره در کتابخانه Turtle، کافی است متد circle را به صورت زیر به کار ببرید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.circle(60)
عدد ۶۰ در این کد شعاع دایره را مشخص میکند. با کم یا زیاد کردن آن، اندازه دایره تغییر خواهد کرد. برای رسم نقطه، یعنی دایره توپر، روی صفحه نیز متد dot به کار میرود:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.dot(20)
عدد ۲۰ در این دستور قطر نقطه را مشخص میکند. با تغییر آن میتوانید اندازه نقطه را کوچک یا بزرگ کنید.

تغییر رنگ و اندازه قلم و صفحه در کتابخانه Turtle
پنجره جدید در کتابخانه Turtle بهطور پیشفرض سفید است و رنگ لاکپشت آن مشکی است. برای شخصیسازی ظاهر برنامه و تغییر رنگ پسزمینه صفحه به آبی یا رنگهای دیگری مانند سبز و قرمز، از دستور زیر استفاده کنید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
turtle.bgcolor("blue")
ضخامت قلم در حالت عادی ۱ است. برای ۵ برابر کردن اندازه قلم و حرکت همزمان به جلو، کد زیر را اجرا کنید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.pensize(5)
t.forward(100)
برای تغییر رنگ نشانهگر، ابتدا اندازه لاکپشت را با متد shapesize بزرگ کنید و سپس با متد fillcolor رنگ درون آن را تغییر دهید. رعایت این ترتیب باعث میشود تفاوت رنگ را واضحتر ببینید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.shapesize(3, 3, 3)
t.fillcolor("red")
برای تغییر رنگ حاشیه بیرونی لاکپشت در همین مثال، متد pencolor را نیز به کار ببرید:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
t.shapesize(3, 3, 3)
t.fillcolor("red")
t.pencolor("green")
مدیریت رویدادها و تعامل با کاربر در Turtle
در ترتل پایتون، علاوه بر ترسیم اشکال ثابت، برای دریافت ورودی از کاربر و ساخت برنامههای تعاملی از توابع مدیریت رویداد استفاده میشود. متدهای مرتبط با کلیک ماوس سه پارامتر مشترک دارند که مقادیرشان بر اساس نیاز برنامه تنظیم میشود:
| پارامترها | عملکرد |
|---|---|
| fun | تابعی با دو آرگومان که مختصات نقطه کلیکشده روی بوم به آن ارجاع داده میشود. |
| btn | شماره دکمه کلیکشده روی ماوس؛ بهطور پیشفرض یک است (دکمه سمت چپ ماوس). |
| add | True یا False. اگر True باشد، یک اتصال جدید اضافه خواهد شد و در غیر این صورت جایگزین قبلی میشود. |
تغییر حرکت با کلیک ماوس (متد onclick)
متد onclick() به شما امکان میدهد مسیر یا جهت لاکپشت را در صورت کلیک کاربر روی نشانهگر تغییر دهید. سینتکس کلی این متد به صورت زیر است:
t.onclick(fun, btn=1, add=None)
در کد زیر، ابتدا سرعت حرکت را روی کمترین مقدار قرار میدهیم و لاکپشت را ۱۰۰ واحد به جلو میبریم. سپس با تعریف تابع fxn(x, y) مشخص میکنیم که به محض کلیک کاربر روی لاکپشت، نشانهگر ۹۰ درجه به راست، یعنی سمت پایین، بچرخد و ۱۰۰ واحد دیگر جلو برود:
import turtle
s = turtle.getscreen()
t = turtle.Turtle()
# method to action
def fxn(x, y):
# some motion
t.right(90)
t.forward(100)
# turtle speed to slowest
t.speed(1)
# motion
t.fd(100)
# allow user to click
# for some action
t.onclick(fxn)
s.mainloop()

کشیدن لاکپشت روی صفحه (متد ondrag)
با استفاده از متد ondrag()، کاربر میتواند روی نشانهگر کلیک کند و با حرکت ماوس، لاکپشت را به هر جهتی روی صفحه بکشد. سینتکس این متد به شکل زیر است:
t.ondrag(fun, btn=1, add=None)
کد زیر نحوه پیادهسازی این قابلیت را نشان میدهد:
import turtle
# make turtle screen object
s = turtle.Screen()
t = turtle.Turtle()
# method to call on drag
def fxn(x, y):
# stop backtracking
t.ondrag(None)
# move the turtle's angle and direction
# towards x and y
t.setheading(t.towards(x, y))
# go to x, y
t.goto(x, y)
# call again
t.ondrag(fxn)
# set turtle speed
t.speed(10)
# set screen size
s.setup(400, 300)
# call fxn on drag
t.ondrag(fxn)
# take screen in mainloop
s.mainloop()
در این کد، ابتدا با Screen() و setup(۴۰۰, ۳۰۰) ابعاد پنجره تنظیم میشود و برنامه با mainloop() در حلقه اجرا میماند. هنگام کشیدن ماوس، تابع fxn با ترکیب setheading و towards زاویه لاکپشت را به سمت مختصات (x, y) میچرخاند و با goto(x, y) آن را به نقطه جدید منتقل میکند. اکنون با ترکیب متدهای حرکتی، دستورات تغییر رنگ و توابع مدیریت رویداد، ابزارهای لازم برای طراحی الگوهای هندسی و برنامههای تعاملی در محیط ترتل پایتون را در اختیار دارید.