GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing python.github.io — turtle --- گرافیک لاکپشتی
|
حالت استاندارد |
حالت لوگو |
|---|---|
۰ - شرق |
۰ - شمال |
۹۰ - شمال |
۹۰ - شرق |
۱۸۰ - غرب |
۱۸۰ - جنوب |
۲۷۰ - جنوب |
۲۷۰ - غرب |
>>> turtle.setheading(90) >>> turtle.heading() 90.0
لاکپشت را به مبدأ -- مختصات (۰،۰) -- منتقل کنید و جهت آن را برابر با جهتگیری اولیهاش تنظیم کنید (که به حالت بستگی دارد، mode() را ببینید).
>>> turtle.heading() 90.0 >>> turtle.position() (0.00,-10.00) >>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
radius -- یک عدد
extent -- یک عدد یا None
steps -- یک عدد صحیح یا None
دایرهای با radius دادهشده رسم میکند. مرکز آن radius واحد در سمت چپ لاکپشت قرار دارد؛ extent — یک زاویه — تعیین میکند کدام بخش از دایره رسم شود. اگر extent داده نشود، کل دایره رسم میشود. اگر extent دایرهی کامل نباشد، یکی از نقاط پایانی کمان، موقعیت فعلی قلم است. اگر radius مثبت باشد، کمان در جهت پادساعتگرد رسم میشود، در غیر این صورت در جهت ساعتگرد. در نهایت، جهت لاکپشت به اندازهی extent تغییر میکند.
از آنجا که دایره با یک چندضلعی منتظم محاطی تقریب زده میشود، steps تعداد گامهای مورد استفاده را تعیین میکند. اگر داده نشود، بهصورت خودکار محاسبه خواهد شد. میتواند برای رسم چندضلعیهای منتظم به کار رود.
>>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(50) >>> turtle.position() (-0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(120, 180) # draw a semicircle >>> turtle.position() (0.00,240.00) >>> turtle.heading() 180.0
size -- یک عدد صحیح (integer) مثبت یا None
color -- یک رشتهی رنگ یا یک تاپل عددی رنگ
با استفاده از color، یک نقطهی دایرهای با قطر size رسم کنید. اگر size داده نشود، بزرگترین مقدار بین pensize + 4 و 2 * pensize استفاده میشود. اگر color داده نشود، رنگ قلم فعلی به کار میرود.
>>> turtle.home() >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) >>> turtle.position() (100.00,-0.00) >>> turtle.heading() 0.0
یک کپی از شکل لاکپشت را در موقعیت فعلی لاکپشت روی بوم مهر میزند. برای آن مهر یک stamp_id برمیگرداند که میتوان از آن برای حذف مهر با فراخوانی clearstamp(stamp_id) استفاده کرد.
>>> turtle.color("blue") >>> stamp_id = turtle.stamp() >>> turtle.fd(50)
stampid -- یک عدد صحیح
یک عدد صحیح، باید مقدار برگشتی فراخوانی پیشین stamp() باشد
>>> turtle.position() (150.00,-0.00) >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.position() (200.00,-0.00) >>> turtle.clearstamp(astamp) >>> turtle.position() (200.00,-0.00)
n -- یک عدد صحیح یا None
همه یا اولین/آخرین n تا از مهرهای turtle را حذف میکند. اگر n None باشد، همه مهرها را حذف میکند؛ اگر n > ۰ باشد، اولین n مهر را حذف میکند، در غیر این صورت اگر n < ۰ باشد، آخرین n مهر را حذف میکند.
>>> for i in range(8): ... unused_stamp_id = turtle.stamp() ... turtle.fd(30) >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps()
آخرین عمل(های) لاکپشت را (بهطور مکرر) واگرد کنید. تعداد عملهای در دسترس برای واگرد، با اندازهی بافر لغو (undobuffer) تعیین میشود.
>>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo()
speed -- یک عدد صحیح (integer)، یک رشته (string) یا None
سرعت لاکپشت (turtle) را برگردانید یا تنظیم کنید. اگر speed داده نشود، سرعت فعلی برگردانده میشود. در غیر این صورت، سرعت لاکپشت (turtle) را روی یک عدد صحیح (integer) از 0 تا 10 تنظیم کنید. اگر speed عددی بزرگتر از 10 یا کوچکتر از 0.5 باشد، سرعت روی 0 تنظیم میشود. همچنین میتوانید بهجای اعداد از این نامها استفاده کنید:
"fastest": 0
"fast": 10
"normal": 6
"slow": 3
"slowest": 1
سرعتهای بین 1 تا 10 پویانمایی سریعتری برای رسم خط و چرخش لاکپشت (turtle) فراهم میکنند. سرعت 0 به این معناست که هیچ پویانماییای انجام نمیشود: forward() و back() باعث پرش لاکپشت (turtle) میشوند و به همین ترتیب left() و right() باعث چرخش آنی لاکپشت (turtle) میشوند.
>>> turtle.speed() 3 >>> turtle.speed('normal') >>> turtle.speed() 6 >>> turtle.speed(9) >>> turtle.speed() 9
موقعیت فعلی لاکپشت (x,y) را برمیگرداند (بهعنوان یک بردار Vec2D).
>>> turtle.pos() (440.00,-0.00)
x -- یک عدد یا یک جفت/بردار از اعداد یا یک نمونه از turtle
y -- اگر x یک عدد باشد، یک عدد، در غیر این صورت None
زاویهی خطی که از موقعیت لاکپشت به (x,y) میرود را برمیگرداند. اگر y برابر None باشد، x باید یک جفت مختصات، یک Vec2D (برای مثال مقداری که توسط pos() بازگردانده میشود) یا یک لاکپشت دیگر باشد. زاویه نسبت به جهتگیری اولیهی لاکپشت اندازهگیری میشود؛ این جهتگیری به حالت لاکپشت بستگی دارد، mode() را ببینید.
>>> turtle.goto(10, 10) >>> turtle.towards(0,0) 225.0
مختصات x لاکپشت را برمیگرداند.
>>> turtle.home() >>> turtle.left(50) >>> turtle.forward(100) >>> turtle.pos() (64.28,76.60) >>> print(round(turtle.xcor(), 5)) 64.27876
مختصات y لاکپشت را برمیگرداند.
>>> turtle.home() >>> turtle.left(60) >>> turtle.forward(100) >>> print(turtle.pos()) (50.00,86.60) >>> print(round(turtle.ycor(), 5)) 86.60254
جهت فعلی لاکپشت را برمیگرداند (مقدار به حالت لاکپشت بستگی دارد، mode() را ببینید).
>>> turtle.home() >>> turtle.left(67) >>> turtle.heading() 67.0
x -- یک عدد یا یک جفت/بردار از اعداد یا یک نمونه از turtle
y -- اگر x یک عدد باشد، یک عدد، در غیر این صورت None
فاصلهی لاکپشت تا (x,y) را بر حسب واحدهای گام لاکپشت برمیگرداند. اگر y برابر None باشد، x باید یک جفت مختصات یا یک Vec2D باشد (مثلاً مانند مقداری که توسط pos() بازگردانده میشود) یا یک لاکپشت دیگر.
>>> turtle.home() >>> turtle.distance(30,40) 50.0 >>> turtle.distance((30,40)) 50.0 >>> joe = Turtle() >>> joe.forward(77) >>> turtle.distance(joe) 77.0
fullcircle -- یک عدد
واحد اندازهگیری زاویه را روی درجه تنظیم کنید. تعداد درجههای یک دایرهی کامل با fullcircle مشخص میشود که پیشفرض آن ۳۶۰ است.
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> # Change angle measurement unit to grad (also known as gon, >>> # grade, or gradian and equals 1/100-th of the right angle.) >>> turtle.degrees(400.0) >>> turtle.heading() 100.0 >>> turtle.degrees(360) >>> turtle.heading() 90.0
واحدهای اندازهگیری زاویه را روی رادیان تنظیم میکند. معادل degrees(2 * math.pi) است.
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966
قلم را پایین بیاورید. لاکپشت (turtle) هنگام حرکت، یک خط رسم میکند.
قلم را بالا ببرید. لاکپشت (turtle) هنگام حرکت چیزی رسم نمیکند.
width -- یک عدد مثبت یا None
ضخامت خط را برگردانید یا تنظیم کنید. اگر width داده نشود، اندازهی قلم فعلی برگردانده میشود. اگر resizemode روی «auto» تنظیم شده باشد و شکل لاکپشت (turtle) یک چندضلعی باشد، آن چندضلعی با همان ضخامت خط رسم میشود.
>>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn
pen -- یک رنگ یا None
pendict -- یک یا چند آرگومان کلیدواژهای با کلیدهای فهرستشده در زیر بهعنوان کلیدواژه
ویژگیهای قلم را در یک «دیکشنری قلم» با جفتهای کلید/مقدار زیر برمیگرداند یا تنظیم میکند:
"shown": True/False
"pendown": True/False
"pencolor": رشتهی رنگ یا تاپل رنگ
"fillcolor": رشتهی رنگ یا تاپل رنگ
"pensize": عدد مثبت
"speed": عددی در بازهی ۰..۱۰
"resizemode": "auto" یا "user" یا "noresize"
"stretchfactor": (عدد مثبت، عدد مثبت)
"shearfactor": a number
"outline": عدد مثبت
"tilt": عدد
این دیکشنری میتواند بهعنوان آرگومان برای فراخوانی بعدی pen() جهت بازیابی وضعیت پیشین قلم استفاده شود. علاوه بر این، میتوان یک یا چند مورد از این ویژگیها را بهصورت آرگومانهای کلیدواژهای ارائه کرد. میتوان از این مورد برای تنظیم چند ویژگی قلم در یک دستور استفاده کرد.
>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> sorted(turtle.pen().items()) [('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'), ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'), ('shearfactor', 0.0), ('shown', True), ('speed', 9), ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)] >>> penstate=turtle.pen() >>> turtle.color("yellow", "") >>> turtle.penup() >>> sorted(turtle.pen().items())[:3] [('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')] >>> turtle.pen(penstate, fillcolor="green") >>> sorted(turtle.pen().items())[:3] [('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
اگر قلم پایین باشد True و اگر بالا باشد False را برگردانید.
>>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True
pencolor را برمیگرداند یا تنظیم میکند.
۴ قالب ورودی مجاز است:
pencolor()رنگ قلم فعلی را بهصورت رشته مشخصه رنگ یا تاپل برمیگرداند (مثال را ببینید). میتواند بهعنوان ورودی برای فراخوانی دیگری از color()، pencolor()، fillcolor() یا bgcolor() استفاده شود.
pencolor(colorstring)رنگ قلم را روی colorstring تنظیم کنید؛ که یک رشتهی (string) مشخصات رنگ Tk است، مانند "red"، "yellow"، یا "#33cc8c".
pencolor((r, g, b))رنگ قلم را روی رنگ RGB نشاندادهشده توسط تاپلِ r، g و b تنظیم کنید. هر یک از r، g و b باید بین 0 و colormode باشند، که در آن colormode برابر با 1.0 یا 255 است (به colormode() مراجعه کنید).
pencolor(r, g, b)رنگ قلم را روی رنگ RGB مشخصشده توسط r، g و b تنظیم کنید. هر کدام از r، g و b باید بین ۰ و colormode باشند.
اگر شکل لاکپشت (turtle) یک چندضلعی باشد، حاشیهی آن چندضلعی با رنگ قلم تازهتنظیمشده رسم میشود.
>>> colormode() 1.0 >>> turtle.pencolor() 'red' >>> turtle.pencolor("brown") >>> turtle.pencolor() 'brown' >>> tup = (0.2, 0.8, 0.55) >>> turtle.pencolor(tup) >>> turtle.pencolor() (0.2, 0.8, 0.5490196078431373) >>> colormode(255) >>> turtle.pencolor() (51.0, 204.0, 140.0) >>> turtle.pencolor('#32c18f') >>> turtle.pencolor() (50.0, 193.0, 143.0)
fillcolor را برمیگرداند یا تنظیم میکند.
۴ قالب ورودی مجاز است:
fillcolor()fillcolor فعلی را بهعنوان رشته مشخصات رنگ برمیگرداند، احتمالاً در قالب تاپل (به مثال مراجعه کنید). ممکن است بهعنوان ورودی برای فراخوانی دیگری از color()، pencolor()، fillcolor() یا bgcolor() استفاده شود.
fillcolor(colorstring)رنگ پر کردن (fillcolor) را روی colorstring تنظیم کنید که یک رشتهی مشخصات رنگ Tk است، مانند "red"، "yellow"، یا "#33cc8c".
fillcolor((r, g, b))رنگ پر کردن را روی رنگ RGB مشخصشده توسط تاپل r، g و b تنظیم کنید. هر کدام از r، g و b باید بین ۰ و colormode باشند، که در آن colormode برابر با ۱.۰ یا ۲۵۵ است (نگاه کنید به colormode()).
fillcolor(r, g, b)رنگ پر کردن را روی رنگ RGB مشخصشده توسط r، g و b تنظیم کنید. هر کدام از r، g و b باید بین ۰ و colormode باشند.
اگر شکل لاکپشت (turtle) یک چندضلعی باشد، درون آن چندضلعی با رنگ پر کردن تازهتنظیمشده رسم میشود.
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> turtle.pencolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor((50, 193, 143)) # Integers, not floats >>> turtle.fillcolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255.0, 255.0, 255.0)
رنگ قلم و رنگ پر کردن را برگردانید یا تنظیم کنید.
چندین قالب ورودی مجاز است. آنها از ۰ تا ۳ آرگومان به شرح زیر استفاده میکنند:
color()رنگ قلم فعلی و رنگ پر کردن فعلی را بهصورت یک جفت از رشتهها یا تاپلهای مشخصهی رنگ، همانگونه که pencolor() و fillcolor() بازمیگردانند، برمیگرداند.
color(colorstring), color((r,g,b)), color(r,g,b)ورودیها مانند pencolor() هستند. هم رنگ قلم و هم رنگ پر کردن را روی مقدار دادهشده تنظیم کنید.
color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2))معادل pencolor(colorstring1) و fillcolor(colorstring2) است و اگر از قالب ورودی دیگر استفاده شود، بهطور مشابه عمل میکند.
اگر شکل لاکپشت (turtle) یک چندضلعی باشد، حاشیه و درون آن چندضلعی با رنگهای تازهتنظیمشده رسم میشوند.
>>> turtle.color("red", "green") >>> turtle.color() ('red', 'green') >>> color("#285078", "#a0c8f0") >>> color() ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))
همچنین ببینید: متد Screen به نام colormode().
اگر لاکپشت (turtle) در حال پر کردن باشد، True را برگردانید، در غیر این صورت False را برگردانید.
>>> turtle.begin_fill() >>> if turtle.filling(): ... turtle.pensize(5) ... else: ... turtle.pensize(3)
شکل کشیدهشده در بلوک with turtle.fill(): را پر کنید.
>>> turtle.color("black", "red") >>> with turtle.fill(): ... turtle.circle(80)
استفاده از fill() معادل افزودن begin_fill() پیش از بلوک پرکردن و end_fill() پس از بلوک پرکردن است:
>>> turtle.color("black", "red") >>> turtle.begin_fill() >>> turtle.circle(80) >>> turtle.end_fill()
اضافه شده در نسخهی 3.14.
Call just before drawing a shape to be filled. The shape is filled by the
next call to end_fill().
شکل رسمشده پس از آخرین فراخوانی begin_fill() را پر کنید.
پر شدن یا پر نشدن ناحیههای همپوشانی برای چندضلعیهای خودمتقاطع یا شکلهای متعدد، به گرافیک سیستمعامل، نوع همپوشانی و تعداد همپوشانیها بستگی دارد. برای مثال، ستارهی Turtle در بالا ممکن است کاملاً زرد باشد یا ناحیههای سفیدی داشته باشد.
>>> turtle.color("black", "red") >>> turtle.begin_fill() >>> turtle.circle(80) >>> turtle.end_fill()
نقاشیهای لاکپشت را از صفحه پاک میکند، لاکپشت را دوباره در مرکز قرار میدهد. تنظیمات لاکپشت به مقادیر پیشفرضش بازگردانده میشوند.
>>> turtle.goto(0,-22) >>> turtle.left(100) >>> turtle.position() (0.00,-22.00) >>> turtle.heading() 100.0 >>> turtle.reset() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
ترسیمات لاکپشت را از صفحه حذف میکند. وضعیت و موقعیت لاکپشت و همچنین ترسیمات سایر لاکپشتها تحت تأثیر قرار نمیگیرند.
arg -- an object
move -- یک بولی
align -- یک رشته
font -- a tuple of a string, an integer and a string
متن - نمایش رشتهای arg - را در موقعیت فعلی لاکپشت بر اساس align ("left"، "center" یا "right") و با قلم دادهشده مینویسد. اگر move درست باشد، قلم به گوشهی پایین سمت راست متن منتقل میشود. بهطور پیشفرض، move برابر False است.
>>> turtle.write("Home = ", True, align="center") >>> turtle.write((0,0), True)
لاکپشت را نامرئی کنید. اگر قلم پایین است، حرکت همچنان رسم میکند.
اگر لاکپشت (turtle) مرئی باشد True و اگر پنهان باشد False را برگردانید.
>>> turtle.hideturtle() >>> turtle.isvisible() False >>> turtle.showturtle() >>> turtle.isvisible() True
name -- یک رشته یا None
شکل لاکپشت (turtle) را روی شکل نامگذاریشده تنظیم کنید. اگر name داده نشده باشد، نام شکل فعلی را برگردانید. شکل باید در دیکشنری (dictionary) شکلهای TurtleScreen وجود داشته باشد. در ابتدا شکلهای زیر وجود دارند: "arrow"، "turtle"، "circle"، "square"، "triangle" و "classic". برای افزودن شکلها، نگاه کنید به متد (method) Screen یعنی register_shape().
>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
rmode -- یک رشته یا None
حالت تغییر اندازه (resizemode) را روی "auto"، "user" یا "noresize" تنظیم کنید. اگر rmode داده نشده باشد، حالت تغییر اندازهی فعلی را برگردانید. حالتهای مختلف تغییر اندازه تأثیرات زیر را دارند:
"auto": اندازهی لاکپشت (turtle) بر اساس مقدار pensize() تغییر میکند.
"user": اندازهی لاکپشت (turtle) بر اساس عوامل کشش و عرض حاشیه که توسط shapesize() تنظیم شدهاند، تغییر میکند.
"noresize": اندازهی لاکپشت (turtle) تغییر نمیکند.
resizemode("user") توسط shapesize() در صورتی که با آرگومانها استفاده شود، فراخوانی میشود.
>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
stretch_wid -- یک عدد مثبت یا None
stretch_len -- یک عدد مثبت یا None
outline -- یک عدد مثبت یا None
عوامل کشش و عرض حاشیهی لاکپشت (turtle) را برگردانید یا تنظیم کنید. اگر هیچ آرگومانی داده نشده باشد، مقادیر فعلی را برگردانید. در غیر این صورت، حالت تغییر اندازه را روی "user" تنظیم کنید تا لاکپشت بر اساس عوامل کشش خود به صورت کشیده نمایش داده شود:
stretch_wid: عامل کشش عمود بر جهت حرکت لاکپشت (turtle)
stretch_len: عامل کشش در راستای جهت حرکت لاکپشت (turtle)
outline: عرض حاشیهی شکل
برای نمونه، shapesize(2, 1) لاکپشت را بدون تغییر طول، دو برابر پهنتر میکند. اگر تنها پارامتر stretch_wid داده شود، stretch_len روی همان مقدار تنظیم میشود.
>>> turtle.shapesize() (1.0, 1.0, 1) >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize() (5, 5, 12) >>> turtle.shapesize(outline=8) >>> turtle.shapesize() (5, 5, 8)
shear -- یک عدد یا None
Return or set the current shear factor. Shearing slants the turtle shape, like the slant of italic letters. The shear factor says how much it is slanted: 0 is not slanted at all, and the larger the number, the stronger the slant. Negative numbers slant the other way. If shear is not given, return the current shear factor. Otherwise slant the turtle shape accordingly and set resizemode to "user". The turtle's heading does not change. Precisely, the shear factor is the tangent of the shear angle.
>>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.shearfactor(0.5) >>> turtle.shearfactor() 0.5
angle -- یک عدد
شکل لاکپشت را به اندازهی angle نسبت به زاویهی کجی فعلیاش بچرخانید، اما جهت لاکپشت (جهت حرکت) را تغییر نکنید.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50)
angle -- یک عدد یا None
Return or set the current tilt angle. The tilt angle is the angle between the direction the turtle shape points in and the direction the turtle moves in. Normally the shape points in the direction of movement, so the tilt angle is 0. If angle is given, turn the turtle shape to that tilt angle, no matter what it was before, and set resizemode to "user". The turtle's heading does not change. If angle is not given, return the current tilt angle.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() 45.0
t11 -- یک عدد یا None
t12 -- یک عدد یا None
t21 -- یک عدد یا None
t22 -- یک عدد یا None
Return or set the transformation matrix of the turtle shape. The matrix
combines the stretch factors, the shear factor and the tilt angle of the
turtle shape into four numbers: t11 and t12 form its first row, t21
and t22 its second. If none of them are given, return the current matrix
as a tuple of four numbers. Otherwise set the given elements and update the
stretch factors, shear factor and tilt angle accordingly.
t11 * t22 - t12 * t21 must not be zero, otherwise an error is raised.
>>> turtle = Turtle() >>> turtle.shape("square") >>> turtle.shapesize(4,2) >>> turtle.shearfactor(-0.5) >>> turtle.shapetransform() (4.0, -1.0, -0.0, 2.0)
چندضلعی شکل فعلی را بهصورت تاپلی از جفتهای مختصات برمیگرداند. این مقدار میتواند برای تعریف یک شکل جدید یا اجزای یک شکل مرکب استفاده شود.
>>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) >>> turtle.get_shapepoly() ((50, -20), (30, 20), (-50, 20), (-30, -20))
fun -- تابعی با دو آرگومان یا None
btn -- یک عدد صحیح
add -- یک بولین یا None
fun را به رویدادهای کلیک ماوس روی این لاکپشت متصل کنید. fun با مختصات نقطهی کلیکشده روی بوم فراخوانی میشود. اگر fun None باشد، اتصالهای موجود حذف میشوند. btn شمارهی دکمهی ماوس است و بهطور پیشفرض ۱ است، یعنی دکمهی چپ ماوس. اگر add True باشد، یک اتصال جدید اضافه میشود، در غیر این صورت یک اتصال پیشین را جایگزین میکند. مثالی برای لاکپشت ناشناس، یعنی روش رویهای:
>>> def turn(x, y): ... left(180) ... >>> onclick(turn) # Now clicking into the turtle will turn it. >>> onclick(None) # event-binding will be removed
fun -- تابعی با دو آرگومان که با مختصات نقطهی کلیکشده روی بوم فراخوانی خواهد شد
btn -- شمارهی دکمهی ماوس، پیشفرض ۱ (دکمهی چپ ماوس)
add -- True یا False — اگر True باشد، یک اتصال جدید افزوده خواهد شد، در غیر این صورت جایگزین یک اتصال پیشین خواهد شد
fun را به رویدادهای رها کردن دکمه ماوس روی این لاکپشت متصل کنید. اگر fun برابر None باشد، اتصالهای موجود حذف میشوند.
>>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> turtle = MyTurtle() >>> turtle.onclick(turtle.glow) # clicking on turtle turns fillcolor red, >>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent.
fun -- تابعی با دو آرگومان که با مختصات نقطهی کلیکشده روی بوم فراخوانی خواهد شد
btn -- شمارهی دکمهی ماوس، پیشفرض ۱ (دکمهی چپ ماوس)
add -- True یا False — اگر True باشد، یک اتصال جدید افزوده خواهد شد، در غیر این صورت جایگزین یک اتصال پیشین خواهد شد
fun را به رویدادهای حرکت ماوس روی این لاکپشت متصل کنید. اگر fun برابر None باشد، اتصالات موجود حذف میشوند.
نکته: پیش از هر دنبالهای از رویدادهای حرکت ماوس روی یک لاکپشت، یک رویداد کلیک ماوس روی همان لاکپشت رخ میدهد.
>>> turtle.ondrag(turtle.goto)
سپس، کلیک کردن و کشیدن Turtle آن را در سراسر صفحه حرکت میدهد و بدین ترتیب ترسیمهای دستی ایجاد میکند (اگر قلم پایین باشد).
رئوس یک چندضلعی ترسیمشده در بلوک with turtle.poly(): را ثبت کنید. اولین و آخرین رأس به یکدیگر متصل میشوند.
>>> with turtle.poly(): ... turtle.forward(100) ... turtle.right(60) ... turtle.forward(100)
استفاده از fill() معادل افزودن begin_fill() پیش از بلوک پرکردن و end_fill() پس از بلوک پرکردن است:
>>> with turtle.poly(): ... turtle.forward(100) ... turtle.right(60) ... turtle.forward(100)
اضافه شده در نسخهی 3.14.
ثبت رأسهای یک چندضلعی را آغاز کنید. موقعیت فعلی لاکپشت، اولین رأس چندضلعی است.
ثبت رأسهای یک چندضلعی را متوقف میکند. موقعیت فعلی لاکپشت آخرین رأس چندضلعی است. این به اولین رأس متصل خواهد شد.
آخرین چندضلعی ثبتشده را برمیگرداند.
>>> turtle.home() >>> turtle.begin_poly() >>> turtle.fd(100) >>> turtle.left(20) >>> turtle.fd(30) >>> turtle.left(60) >>> turtle.fd(50) >>> turtle.end_poly() >>> p = turtle.get_poly() >>> register_shape("myFavouriteShape", p)
یک رونوشت از لاکپشت ایجاد کرده و آن را برمیگرداند. رونوشت دارای همان موقعیت، جهت و ویژگیهای لاکپشت است.
>>> leonel = Turtle() >>> marco = leonel.clone()
خود شیء Turtle را برمیگرداند.
برای دریافت لاکپشتِ مورد استفادهی توابع مانند forward() و left()، تابع getturtle() را فراخوانی کنید:
>>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x...>
شیء TurtleScreen را که لاکپشت روی آن ترسیم میکند، برمیگرداند. سپس میتوان متدهای TurtleScreen را برای آن شیء فراخوانی کرد.
>>> ts = turtle.getscreen() >>> ts <turtle._Screen object at 0x...> >>> ts.bgcolor("pink")
size -- یک عدد صحیح یا None
بافر لغو را تنظیم یا غیرفعال کنید. اگر size یک عدد صحیح باشد، یک بافر لغو خالی با اندازهی مشخصشده نصب میشود. size حداکثر تعداد کنشهای لاکپشت است که میتواند توسط undo() لغو شود. اگر size مقدار None باشد، بافر لغو غیرفعال میشود.
>>> turtle.setundobuffer(42)
تعداد ورودیهای موجود در بافر لغو را برمیگرداند.
>>> while undobufferentries(): ... undo()
بیشتر مثالهای این بخش به یک نمونه از TurtleScreen به نام screen اشاره میکنند.
رنگ پسزمینهی TurtleScreen را برمیگرداند یا تنظیم میکند.
۴ قالب ورودی مجاز است:
bgcolor()رنگ پسزمینهی جاری را بهصورت یک رشتهی مشخصهی رنگ یا یک تاپل برمیگرداند (مثال را ببینید). میتواند بهعنوان ورودی در فراخوانی دیگری از color()، pencolor()، fillcolor() یا bgcolor() استفاده شود.
bgcolor(colorstring)رنگ پسزمینه را روی colorstring تنظیم کنید، که یک رشته مشخصات رنگ Tk است، مانند "red"، "yellow" یا "#33cc8c".
bgcolor((r, g, b))رنگ پسزمینه را روی رنگ RGB بیانشده با تاپل r، g و b تنظیم کنید. هر یک از r، g و b باید بین ۰ و colormode باشند، که colormode میتواند ۱.۰ یا ۲۵۵ باشد (به colormode() مراجعه کنید).
bgcolor(r, g, b)رنگ پسزمینه را روی رنگ RGB نشاندادهشده با r، g و b تنظیم کنید. هر یک از r، g و b باید بین ۰ و colormode باشد.
>>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor("#800080") >>> screen.bgcolor() (128.0, 0.0, 128.0)
picname -- یک رشته یا None
تصویر پسزمینه را تنظیم میکند یا نام تصویر پسزمینهی فعلی را برمیگرداند. اگر picname یک نام پرونده باشد، تصویر مربوطه را بهعنوان پسزمینه تنظیم میکند. اگر picname "nopic" باشد، در صورت وجود، تصویر پسزمینه را حذف میکند. اگر picname None باشد، نام پرونده تصویر پسزمینهی فعلی را برمیگرداند.
>>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() "landscape.gif"
نکته
این متد TurtleScreen تنها با نام clearscreen بهعنوان یک تابع سراسری در دسترس است. تابع سراسری clear تابع متفاوتی است که از متد clear در Turtle گرفته شده است.
تمام ترسیمها و تمام لاکپشتها را از TurtleScreen حذف میکند. TurtleScreen که اکنون خالی است را به وضعیت اولیهاش بازنشانی میکند: پسزمینه سفید، بدون تصویر پسزمینه، بدون اتصالهای رویداد و با ردگیری روشن.
نکته
این متد TurtleScreen فقط با نام resetscreen بهعنوان یک تابع سراسری در دسترس است. تابع سراسری reset تابع دیگری است که از متد reset در Turtle مشتق شده است.
بازنشانی همهی لاکپشتهای روی صفحه به وضعیت اولیهشان.
canvwidth -- یک عدد صحیح (integer) مثبت یا None
canvheight -- یک عدد صحیح (integer) مثبت یا None
bg -- یک رشتهی رنگ یا یک تاپل عددی رنگ
Resize the canvas the turtles are drawing on. canvwidth and canvheight are the new width and height of the canvas in pixels, and bg is the new background color. If no arguments are given, return the current canvas width and height.
The drawing window is not altered. To see hidden parts of the canvas, use the scrollbars. This can make visible those parts of a drawing which were outside the canvas before, for example to find a turtle that has wandered off the canvas.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
llx -- یک عدد
lly -- یک عدد
urx -- یک عدد
ury -- یک عدد
یک سیستم مختصات تعریفشده توسط کاربر تنظیم کنید. llx و lly مختصات x و y گوشهی پایین چپ بوم هستند. urx و ury مختصات x و y گوشهی بالا راست هستند. در صورت لزوم به حالت "world" بروید که بازنشانی را انجام میدهد. اگر حالت "world" از قبل فعال باشد، تمام ترسیمات بر اساس مختصات جدید دوباره ترسیم میشوند. در سیستمهای مختصات تعریفشده توسط کاربر، زوایا ممکن است تحریفشده به نظر برسند، mode() را ببینید.
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # a regular octagon
پویانمایی turtle را بهطور موقت غیرفعال میکند. کد نوشتهشده درون بلوک with پویانمایی نخواهد شد؛ پس از خروج از بلوک کد، ترسیم ظاهر میشود. این برای رسم شکلهای پیچیدهای مفید است که حتی سریعترین تنظیم سرعت نیز برای آنها بسیار کند است.
>>> with screen.no_animation(): ... for dist in range(2, 400, 2): ... fd(dist) ... rt(90)
اضافه شده در نسخهی 3.14.
delay -- یک عدد صحیح نامنفی یا None
تأخیر ترسیم را بر حسب میلیثانیه تنظیم میکند یا برمیگرداند. این مقدار تقریباً بازهی زمانی بین دو بهروزرسانی متوالی بوم است. هرچه تأخیر ترسیم طولانیتر باشد، پویانمایی کندتر خواهد بود.
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
n -- یک عدد صحیح نامنفی یا None
delay -- یک عدد صحیح نامنفی یا None
پویانمایی turtle را روشن یا خاموش کنید و تأخیر ترسیم را تنظیم کنید. اگر n داده شود، تنها هر n-امین بهروزرسانی منظم صفحه انجام میشود، که میتواند برای تسریع ترسیم گرافیکهای پیچیده استفاده شود. اگر n برابر ۰ باشد، پویانمایی خاموش میشود و صفحه تنها با فراخوانی update() بهروزرسانی میشود. اگر delay داده شود، تأخیر ترسیم را تنظیم میکند، delay() را ببینید. هنگامی که بدون آرگومان فراخوانی شود، مقدار فعلی n را برمیگرداند.
>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
بهروزرسانی TurtleScreen را انجام میدهد. زمانی استفاده میشود که tracer خاموش باشد.
همچنین متد speed() در RawTurtle/Turtle را ببینید.
xdummy -- ignored
ydummy -- ignored
تمرکز را روی TurtleScreen تنظیم کنید (برای جمعآوری رویدادهای کلید). آرگومانهای ساختگی ارائه شدهاند تا بتوانید listen() را به متد onclick بفرستید.
fun -- تابعی بدون آرگومان یا None
key -- یک رشته
fun را به رویداد رها شدن کلید متصل میکند. اگر fun برابر None باشد، اتصالهای رویداد حذف میشوند. نکته: برای اینکه بتوانید رویدادهای کلید را ثبت کنید، TurtleScreen باید فوکوس را داشته باشد. (متد listen() را ببینید.)
>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
The turtle can then be moved by repeatedly pressing the up-arrow key, drawing a hexagon.
fun -- تابعی بدون آرگومان یا None
key -- یک رشته یا None
fun را، اگر key دادهشده باشد، به رویداد فشردن کلید مربوط به key، و اگر key دادهنشده باشد، به هر رویداد فشردن کلید متصل میکند. نکته: برای آن که بتوانید رویدادهای کلید را ثبت کنید، TurtleScreen باید فوکوس داشته باشد. (متد listen() را ببینید.)
>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
The turtle can then be moved by pressing or holding down the up-arrow key, drawing a hexagon.
fun -- تابعی با دو آرگومان یا None
btn -- یک عدد صحیح
add -- یک بولین یا None
fun را به رویدادهای کلیک ماوس روی این صفحه متصل کنید. fun با مختصات نقطهی کلیکشده روی بوم فراخوانی میشود. اگر fun None باشد، اتصالهای موجود حذف میشوند. btn شمارهی دکمهی ماوس است و بهطور پیشفرض ۱ است، یعنی دکمهی چپ ماوس. اگر add True باشد، یک اتصال جدید اضافه میشود، در غیر این صورت یک اتصال پیشین را جایگزین میکند.
مثالی برای نمونهای از TurtleScreen به نام screen و نمونهای از Turtle به نام turtle:
>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) # remove event binding again
نکته
این متد TurtleScreen فقط با نام onscreenclick بهعنوان یک تابع سراسری در دسترس است. تابع سراسری onclick تابع دیگری است که از متد onclick Turtle مشتق شده است.
fun -- تابعی بدون آرگومان
t -- عدد صحیح نامنفی
یک زمانسنج نصب کنید که fun را پس از t میلیثانیه فراخوانی کند.
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### makes the turtle march around >>> running = False
حلقهی رویداد را با فراخوانی متد mainloop() از Tkinter آغاز میکند. باید آخرین دستور در یک برنامهی گرافیک turtle باشد. اگر یک اسکریپت از داخل IDLE در حالت -n اجرا شود، نباید از آن استفاده شود (اجرای بدون زیرفرایند را ببینید).
title -- یک رشته
prompt -- یک رشته
یک پنجرهی محاوره برای دریافت یک رشته باز میکند. title عنوان پنجرهی محاوره است و prompt متنی است که توصیف میکند چه اطلاعاتی باید وارد شود. رشتهی ورودی را برمیگرداند. اگر پنجرهی محاوره لغو شود، None برمیگرداند.
>>> screen.textinput("NIM", "Name of first player:")
title -- یک رشته
prompt -- یک رشته
default -- یک عدد یا None
minval -- یک عدد یا None
maxval -- یک عدد یا None
یک پنجرهی محاوره برای دریافت یک عدد باز میکند. title عنوان پنجرهی محاوره است و prompt متنی است که توصیف میکند چه اطلاعات عددی باید وارد شود. default مقدار پیشفرض است، minval و maxval حداقل و حداکثر مقدار برای ورودی هستند. اگر این مقادیر داده شده باشند، عدد ورودی باید بین minval و maxval باشد. در غیر این صورت، یک راهنمایی نمایش داده میشود و پنجرهی محاوره برای اصلاح باز میماند. عدد ورودی را برمیگرداند. اگر پنجرهی محاوره لغو شود، None برگردانده میشود.
>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
mode -- یک رشته یا None
حالت turtle را تنظیم کنید و بازنشانی را انجام دهید. mode یکی از رشتههای "standard"، "logo" یا "world" است. اگر حالتی داده نشود، حالت فعلی برگردانده میشود.
حالت "standard" با ماژول قدیمی turtle سازگار است. حالت "logo" با بیشتر گرافیکهای لاکپشتی Logo سازگار است. حالت "world" از مختصات جهانی تعریفشده توسط کاربر استفاده میکند، setworldcoordinates() را ببینید. در این حالت، اگر واحدهای x و y همطول نباشند، زاویهها اعوجاجیافته به نظر میرسند.
حالت |
جهت اولیه لاکپشت |
زوایای مثبت |
|---|---|---|
"standard" |
به سمت راست (شرق) |
پادساعتگرد |
"logo" |
رو به بالا (شمال) |
در جهت عقربههای ساعت |
>>> mode("logo") # resets turtle heading to north >>> mode() 'logo'
cmode -- یک عدد یا None
colormode را برمیگرداند یا آن را روی 1.0 یا 255 تنظیم میکند. پس از آن، مقادیر r، g و b در سهتاییهای رنگ باید بین 0 و cmode باشند.
>>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) Traceback (most recent call last): ... TurtleGraphicsError: bad color sequence: (240, 160, 80) >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> screen.colormode() 255 >>> turtle.pencolor(240,160,80)
Canvas این TurtleScreen را برمیگرداند. برای افراد مطلعی که میدانند با یک Canvas در Tkinter چه کنند، مفید است.
>>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas object ...>
فهرستی از نامهای تمام شکلهای لاکپشتی که در حال حاضر در دسترس هستند را برمیگرداند.
>>> screen.getshapes() ['arrow', 'blank', 'circle', ..., 'turtle']
name -- یک رشته
shape -- یک رشته، یک تاپل از جفتهای عددی، یک شیء Shape یا None
یک شکل لاکپشت به فهرست شکلهای TurtleScreen اضافه کنید. این تابع میتواند به چهار روش مختلف فراخوانی شود:
name نام یک پرونده تصویری (PNG، GIF، PGM و PPM) است و shape برابر None است: شکل تصویری متناظر نصب میشود.
>>> screen.register_shape("turtle.gif")
name یک رشته دلخواه است و shape نام یک پرونده تصویری (PNG، GIF، PGM و PPM) است: شکل تصویری متناظر را نصب کنید.
>>> screen.register_shape("turtle", "turtle.gif")
name یک رشته دلخواه است و shape تاپلی از جفتهای مختصات است: شکل چندضلعی متناظر نصب میشود.
>>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
name یک رشته دلخواه است و shape یک شیء Shape (مرکب) است: شکل مرکب متناظر نصب میشود.
شکلهای تصویری هنگام چرخاندن لاکپشت نمیچرخند، بنابراین جهت لاکپشت را نمایش نمیدهند. برای استفاده از یک شکل ثبتشده، shape() را با نام آن فراخوانی کنید.
تغییر یافته در نسخهی 3.14: پشتیبانی از قالبهای تصویری PNG، PGM و PPM افزوده شد. میتوان هم نام شکل و هم نام پرونده تصویر را مشخص کرد.
فهرست لاکپشتهای روی صفحه را برمیگرداند.
>>> for turtle in screen.turtles(): ... turtle.color("red")
ارتفاع پنجرهی turtle را برمیگرداند.
>>> screen.window_height() 480
عرض پنجرهی turtle را برمیگرداند.
>>> screen.window_width() 640
پنجرهی گرافیک لاکپشتی را ببندید.
متد bye() را به کلیکهای ماوس روی Screen متصل کنید.
اگر مقدار "using_IDLE" در دیکشنری پیکربندی False باشد (مقدار پیشفرض)، همچنین وارد mainloop شوید. نکته: اگر از IDLE با سوییچ -n (بدون subprocess) استفاده شود، این مقدار باید در turtle.cfg روی True تنظیم شود. در این حالت، mainloop خود IDLE برای اسکریپت کلاینت نیز فعال است.
filename -- یک رشته
overwrite -- یک بولی
Save the current drawing and the turtles as a PostScript file. filename
is the path of the file to create. It must end with ".ps" or
".eps". If a file with that name already exists, a
FileExistsError is raised, unless overwrite is True.
overwrite must be given by name, as in overwrite=True.
>>> screen.save("my_drawing.ps") >>> screen.save("my_drawing.ps", overwrite=True)
اضافه شده در نسخهی 3.14.
اندازه و موقعیت پنجره اصلی را تنظیم میکند. مقادیر پیشفرض آرگومانها در دیکشنری پیکربندی ذخیره شدهاند و میتوان آنها را از طریق یک پرونده turtle.cfg تغییر داد.
width -- اگر عدد صحیح باشد، اندازهای بر حسب پیکسل است؛ اگر عدد اعشاری باشد، کسری از صفحهنمایش است؛ پیشفرض ۵۰٪ از صفحهنمایش است
height -- اگر عدد صحیح باشد، ارتفاع بر حسب پیکسل است؛ اگر عدد اعشاری باشد، کسری از صفحه است؛ پیشفرض ۷۵٪ صفحه است
startx -- اگر مثبت باشد، موقعیت شروع بر حسب پیکسل از لبهی چپ صفحهنمایش، اگر منفی باشد از لبهی راست، و اگر None باشد، پنجره را بهصورت افقی در مرکز قرار میدهد
starty -- اگر مثبت باشد، موقعیت شروع بر حسب پیکسل از لبهی بالای صفحه؛ اگر منفی باشد، از لبهی پایین؛ اگر None باشد، پنجره را بهصورت عمودی وسط قرار میدهد
>>> screen.setup (width=200, height=200, startx=0, starty=0) >>> # sets window to 200x200 pixels, in upper left of screen >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) >>> # sets window to 75% of screen by 50% of screen and centers
titlestring -- یک رشته
عنوان پنجرهی turtle را روی titlestring تنظیم کنید. عنوان در نوار عنوان پنجرهی گرافیک لاکپشتی نمایش داده میشود.
>>> screen.title("Welcome to the turtle zoo!")
canvas -- یک tkinter.Canvas، یک ScrolledCanvas یا یک TurtleScreen
یک لاکپشت ایجاد کنید. این لاکپشت تمام متدهایی را دارد که در بالا بهعنوان «متدهای Turtle/RawTurtle» شرح داده شدهاند.
زیرکلاسی از RawTurtle، همان رابط را دارد اما روی یک شیء پیشفرض Screen ترسیم میکند که بهطور خودکار هنگامی که برای اولین بار به آن نیاز باشد ایجاد میشود.
cv -- یک tkinter.Canvas
متدهای صفحهمحوری مانند bgcolor() و غیره را فراهم میکند که در بالا توضیح داده شدهاند.
زیرکلاسی از TurtleScreen، با چهار متد اضافهشده. فراخوانی Screen() تنها شیء صفحه را برمیگرداند. اگر هنوز وجود نداشته باشد، ایجاد میشود. در غیر این صورت شیء موجود برگردانده میشود.
master -- یک ابزارک Tkinter برای دربرگرفتن ScrolledCanvas، یعنی یک بوم Tkinter با نوارهای پیمایش افزودهشده
توسط کلاس Screen استفاده میشود، که بنابراین بهطور خودکار یک ScrolledCanvas را بهعنوان زمین بازی برای لاکپشتها فراهم میکند.
type_ -- یک رشته
data -- به type_ بستگی دارد
ساختار دادهای که اشکال را مدلسازی میکند. type_ یکی از رشتههای "polygon"، "image" یا "compound" است. اینکه data باید چه باشد به type_ بستگی دارد: برای "polygon" یک تاپل از جفتهای مختصات، برای "image" یک تصویر (فقط بهصورت داخلی استفاده میشود)، و برای "compound" None، زیرا یک شکل مرکب با استفاده از متد addcomponent() ساخته میشود.
poly -- یک تاپل از جفتهای عددی
fill -- یک رنگ
outline -- یک رنگ یا None
یک جزء به یک شکل از نوع "compound" اضافه کنید. poly یک چندضلعی است، یک تاپل از جفتهای اعداد. fill رنگی است که چندضلعی با آن پر میشود و outline رنگ خط دور آن است. اگر outline داده نشده باشد، از fill برای آن نیز استفاده میشود.
مثال:
>>> poly = ((0,0), (10,-5), (0,10), (-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # ... add more components and then use register_shape()
نحوهی استفاده از اشکال ترکیبی را ببینید.
یک کلاس بردار دوبعدی، که بهعنوان یک کلاس کمکی برای پیادهسازی گرافیک لاکپشتی (turtle graphics) استفاده میشود. ممکن است برای برنامههای گرافیک لاکپشتی نیز مفید باشد. از تاپلمشتق شده است، بنابراین بردار یک تاپل است!
فراهم میکند (برای بردارهای a و b، عدد k):
a + b جمع برداری
a - b تفریق برداری
a * b ضرب داخلی
ضرب k * a و a * k در اسکالر
abs(a) مقدار مطلق a
a.rotate(angle) چرخش
ماژول turtle استثنای زیر را تعریف میکند:
برای آرگومانها یا عملیاتهای نامعتبر رخ میدهد. برای مثال، یک رشتهی رنگِ نامناسب:
>>> turtle.color("blau") Traceback (most recent call last): ... turtle.TurtleGraphicsError: bad color string: blau
این بخش برخی از موارد استفاده و رویکردهای رایج turtle را پوشش میدهد.
از پایتون 3.14 به بعد، میتوانید بهجای begin_fill() و end_fill() از fill() بهعنوان context manager استفاده کنید تا شروع و پایان پر کردن بهطور خودکار انجام شود. در اینجا مثالی آورده شده است:
with fill(): for i in range(4): forward(100) right(90) forward(200)
کد بالا معادل است با:
begin_fill() for i in range(4): forward(100) right(90) end_fill() forward(200)
برای استفاده از شکلهای ترکیبی turtle، که از چندین چندضلعی با رنگهای متفاوت تشکیل شدهاند، باید بهصراحت از کلاس کمکی Shape استفاده کنید، همانطور که در زیر توضیح داده شده است:
یک شیء Shape خالی از نوع «compound» ایجاد کنید.
هر تعداد کامپوننت که بخواهید، با استفاده از متد addcomponent() به این شیء اضافه کنید.
برای مثال:
>>> s = Shape("compound") >>> poly1 = ((0,0), (10,-5), (0,10), (-10,-5)) >>> s.addcomponent(poly1, "red", "blue") >>> poly2 = ((0,0), (10,-5), (-10,-5)) >>> s.addcomponent(poly2, "blue", "red")
اکنون Shape را به shapelistِ Screen اضافه کنید و از آن استفاده کنید:
>>> register_shape("myshape", s) >>> shape("myshape")
turtle¶استفاده از from turtle import * مناسب است، اما توجه داشته باشید که این دستور مجموعهای نسبتاً بزرگ از شیءها را ایمپورت میکند و اگر کاری بهجز گرافیک turtle انجام میدهید، با خطر تعارض نام مواجه میشوید (این موضوع بهویژه زمانی مشکلسازتر میشود که از گرافیک turtle در اسکریپتی استفاده میکنید که ممکن است ماژولهای دیگر نیز ایمپورت شوند).
راهحل استفاده از import turtle است - fd() به turtle.fd() تبدیل میشود، width() به turtle.width() تبدیل میشود و به همین ترتیب. (اگر تایپ کردن مکرر "turtle" خستهکننده شد، برای مثال بهجای آن از import turtle as t استفاده کنید.)
توصیه میشود همانطور که بلافاصله در بالا توضیح داده شد، از فضای نام ماژول turtle استفاده کنید، برای مثال:
import turtle as t from random import random for i in range(100): steps = int(random() * 100) angle = int(random() * 360) t.right(angle) t.fd(steps)
البته یک مرحله دیگر نیز لازم است — به محض اینکه اسکریپت تمام شود، پایتون پنجره turtle را نیز خواهد بست. اضافه کنید:
t.mainloop()
به انتهای اسکریپت. اسکریپت اکنون منتظر میماند تا بسته شود و تا زمانی که پایان داده نشود، خارج نخواهد شد، برای مثال با بستن پنجرهی گرافیک turtle.
همچنین ببینید
بهجز برای اهداف مقدماتی بسیار ساده، یا برای امتحان کردن موارد مختلف در سریعترین حالت ممکن، استفاده از رویکرد شیءگرا برای گرافیک لاکپشتی معمولتر و بسیار قدرتمندتر است. برای مثال، این رویکرد امکان داشتن چندین لاکپشت بهطور همزمان روی صفحه را میدهد.
در این رویکرد، دستورات مختلف turtle متدهایی از اشیاء هستند (بیشتر از اشیاء Turtle). شما میتوانید از رویکرد شیءگرا در پوسته استفاده کنید، اما این کار در یک اسکریپت پایتون معمولتر است.
مثال بالا سپس بهصورت زیر درمیآید:
from turtle import Turtle from random import random t = Turtle() for i in range(100): steps = int(random() * 100) angle = int(random() * 360) t.right(angle) t.fd(steps) t.screen.mainloop()
به خط آخر توجه کنید. t.screen نمونهای از Screen است که یک نمونهی Turtle بر روی آن قرار دارد؛ این صفحه بهصورت خودکار بههمراه لاکپشت ایجاد میشود.
میتوان صفحهی turtle را سفارشی کرد، برای مثال:
t.screen.title('Object-oriented turtle demo') t.screen.bgcolor("orange")
help()¶متدهای عمومی کلاسهای Screen و Turtle بهطور گستردهای از طریق رشتهمستندها مستند شدهاند. بنابراین میتوان از آنها بهعنوان راهنمای برخط از طریق امکانات راهنمای پایتون استفاده کرد:
هنگام استفاده از IDLE، راهنماهای شناور (tooltips) امضاها و ردیفهای نخست رشتهمستندهای فراخوانیهای تابع/متد تایپشده را نمایش میدهند.
فراخوانی help() برای متدها یا توابع، رشته مستنداترا نمایش میدهد:
>>> help(Screen.bgcolor) Help on method bgcolor in module turtle: bgcolor(self, *args) unbound turtle.Screen method Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. >>> screen.bgcolor("orange") >>> screen.bgcolor() "orange" >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() "#800080" >>> help(Turtle.penup) Help on method penup in module turtle: penup(self) unbound turtle.Turtle method Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument >>> turtle.penup()
رشتهمستندهای توابعی که از متدها مشتق شدهاند، شکلی تغییریافته دارند:
>>> help(bgcolor) Help on function bgcolor in module turtle: bgcolor(*args) Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example:: >>> bgcolor("orange") >>> bgcolor() "orange" >>> bgcolor(0.5,0,0.5) >>> bgcolor() "#800080" >>> help(penup) Help on function penup in module turtle: penup() Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example: >>> penup()
این رشتهمستندهای تغییریافته بهطور خودکار بههمراه تعریف توابعی که در زمان ایمپورت از متدها مشتق شدهاند، ایجاد میشوند.
ابزاری برای ایجاد یک دیکشنری وجود دارد که کلیدهای آن نام متدها و مقادیر آن رشتهمستندهای متدهای عمومی کلاسهای Screen و Turtle هستند.
filename -- یک رشته، که بهعنوان نام پرونده استفاده میشود
دیکشنری رشتهمستندها (docstring dictionary) را ایجاد کرده و آن را در یک اسکریپت پایتون با نام پرونده دادهشده بنویسید. این تابع باید بهصراحت فراخوانی شود (کلاسهای گرافیک لاکپشتی از آن استفاده نمیکنند). دیکشنری رشتهمستندها در اسکریپت پایتون filename.py نوشته خواهد شد. این دیکشنری بهعنوان الگویی برای ترجمهی رشتهمستندها به زبانهای مختلف در نظر گرفته شده است.
اگر شما (یا دانشآموزان شما) میخواهید از turtle با راهنمای برخط به زبان مادری خود استفاده کنید، باید رشتهمستندها را ترجمه کنید و پرونده حاصل را مثلاً با نام turtle_docstringdict_german.py ذخیره کنید.
اگر ورودی مناسبی در پرونده turtle.cfg خود داشته باشید، این دیکشنری در زمان ایمپورت خوانده میشود و جایگزین رشتهمستندهای اصلی انگلیسی میشود.
در زمان نگارش این متن، دیکشنریهای رشته مستند به زبانهای آلمانی و ایتالیایی وجود دارند. (لطفاً درخواستها را به glingl@aon.at ارسال کنید.)
پیکربندی پیشفرض توکار، ظاهر و رفتار ماژول قدیمی turtle را تقلید میکند تا بهترین سازگاری ممکن با آن حفظ شود.
اگر میخواهید از پیکربندی متفاوتی استفاده کنید که بهتر ویژگیهای این ماژول را منعکس کند یا بهتر با نیازهای شما مطابقت داشته باشد، برای مثال برای استفاده در کلاس درس، میتوانید یک پرونده پیکربندی turtle.cfg آماده کنید که در زمان ایمپورت خوانده میشود و پیکربندی را مطابق تنظیمات آن تغییر میدهد.
پیکربندی توکار معادل turtle.cfg زیر است:
width = 0.5 height = 0.75 leftright = None topbottom = None canvwidth = 400 canvheight = 300 mode = standard colormode = 1.0 delay = 10 undobuffersize = 1000 shape = classic pencolor = black fillcolor = black resizemode = noresize visible = True language = english exampleturtle = turtle examplescreen = screen title = Python Turtle Graphics using_IDLE = False
توضیح کوتاه درباره ورودیهای انتخابشده:
۴ خط اول متناظر با آرگومانهای متد Screen.setup هستند.
خط ۵ و ۶ با آرگومانهای متد Screen.screensize متناظر هستند.
shape میتواند هر یک از شکلهای توکار باشد، مثلاً arrow، turtle و غیره. برای اطلاعات بیشتر help(shape) را امتحان کنید.
اگر میخواهید از هیچ رنگ پرکنندهای استفاده نکنید (یعنی لاکپشت را شفاف کنید)، باید fillcolor = "" را بنویسید (اما تمام رشتههای غیرخالی نباید در پرونده cfg علامت نقلقول داشته باشند).
اگر میخواهید لاکپشت وضعیت خود را منعکس کند، باید از resizemode = auto استفاده کنید.
اگر برای مثال language = italian را تنظیم کنید، دیکشنری docstring turtle_docstringdict_italian.py در زمان ایمپورت بارگذاری خواهد شد (اگر در مسیر ایمپورت وجود داشته باشد، برای مثال در همان پوشهای که turtle در آن قرار دارد).
مدخلهای exampleturtle و examplescreen نامهای این شیءها را، همانگونه که در رشتهمستندها آمدهاند، تعریف میکنند. تبدیل رشتهمستندهای متد به رشتهمستندهای تابع، این نامها را از رشتهمستندها حذف خواهد کرد.
using_IDLE: اگر بهطور منظم با IDLE و گزینهی -n آن («بدون زیرفرایند») کار میکنید، این را روی True تنظیم کنید. این کار مانع از ورود exitonclick() به حلقه اصلی میشود.
ممکن است یک پرونده turtle.cfg در پوشهای که turtle در آن ذخیره شده است وجود داشته باشد و یک پرونده دیگر نیز در پوشه کاری فعلی وجود داشته باشد. دومی تنظیمات اولی را بیاثر میکند.
پوشهی Lib/turtledemo شامل یک پروندهی turtle.cfg است. میتوانید آن را بهعنوان نمونه بررسی کنید و اثرات آن را هنگام اجرای دموها مشاهده کنید (ترجیحاً نه از درون نمایشگر دمو).
یک شیء turtle روی یک شیء screen ترسیم میکند، و تعدادی کلاس کلیدی در رابط شیءگرای turtle وجود دارد که میتوان از آنها برای ایجاد آنها و برقراری ارتباط میان آنها با یکدیگر استفاده کرد.
اگر نمونهای از قبل موجود نباشد، یک نمونه Turtle بهطور خودکار یک نمونه Screen ایجاد میکند.
Turtle زیرکلاسی از RawTurtle است که بهطور خودکار یک سطح ترسیم ایجاد نمیکند — باید یک بوم برای آن فراهم یا ایجاد شود. این بوم میتواند یک tkinter.Canvas، ScrolledCanvas یا TurtleScreen باشد.
TurtleScreen سطح ترسیم پایه برای یک لاکپشت است. Screen زیرکلاسی از TurtleScreen است و شامل برخی متدهای اضافی برای مدیریت ظاهر آن (از جمله اندازه و عنوان) و رفتار آن است. سازندهی TurtleScreen به یک tkinter.Canvas یا یک ScrolledCanvas بهعنوان آرگومان نیاز دارد.
رابط تابعی برای گرافیک لاکپشتی از متدهای مختلف Turtle و TurtleScreen/Screen استفاده میکند. در پشت صحنه، هر زمان که تابعی مشتقشده از یک متد Screen فراخوانی شود، یک شیء صفحه بهطور خودکار ایجاد میشود. بهطور مشابه، هر زمان که هر یک از توابع مشتقشده از یک متد Turtle فراخوانی شود، یک شیء لاکپشت بهطور خودکار ایجاد میشود.
برای استفاده از چندین لاکپشت در یک صفحه، باید از رابط شیءگرا استفاده شود.
turtledemo --- اسکریپتهای نمایشی¶بستهی turtledemo شامل مجموعهای از اسکریپتهای نمایشی است. این اسکریپتها را میتوان با استفاده از نمایشگر نمایشی ارائهشده به صورت زیر اجرا و مشاهده کرد:
python -m turtledemo
بهعنوان جایگزین، میتوانید اسکریپتهای نمایشی را بهصورت جداگانه اجرا کنید. برای مثال،
python -m turtledemo.bytedesign
پوشهی بستهی turtledemo شامل:
یک نمایشگر نمونه __main__.py که میتوان از آن برای مشاهدهی کد منبع اسکریپتها و اجرای همزمان آنها استفاده کرد.
چندین اسکریپت که ویژگیهای مختلف ماژول turtle را نشان میدهند. میتوانید به نمونهها از طریق منوی Examples دسترسی داشته باشید. همچنین میتوان آنها را بهصورت مستقل اجرا کرد.
یک پرونده turtle.cfg که بهعنوان نمونهای از چگونگی نوشتن و استفاده از چنین پروندههایی به کار میرود.
اسکریپتهای نمایشی عبارتند از:
نام |
توضیحات |
امکانات |
|---|---|---|
|
الگوی کلاسیک پیچیدهی گرافیک لاکپشتی |
|
|
نمودار پویاییهای Verhulst را رسم میکند و نشان میدهد که محاسبات رایانه گاهی میتواند نتایجی برخلاف انتظارات عقل سلیم تولید کند |
مختصات جهانی |
|
ساعت عقربهای که زمان رایانهی شما را نشان میدهد |
لاکپشتها بهعنوان عقربههای ساعت، |
|
با r، g و b آزمایش کنید |
|
|
۳ درخت سطحاول |
تصادفیسازی |
|
منحنیهای هیلبرت و کخ |
بازگشت |
|
ریاضیات قومی (کولامهای هندی) |
السیستم (L-System) |
|
برجهای هانوی |
لاکپشتهای مستطیلی بهعنوان دیسکهای هانوی ( |
|
بازی کلاسیک نیم (Nim) را با سه هیپ چوب در برابر رایانه انجام دهید. |
لاکپشتها بهعنوان nimsticks، رویدادمحور (ماوس، صفحهکلید) |
|
برنامهی ترسیم بسیار سادهگرا |
|
|
مقدماتی |
turtle: ظاهر و پویانمایی |
|
کاشیکاری غیرتناوبی با بادبادکها و تیرها |
|
|
شبیهسازی سامانه گرانشی |
شکلهای ترکیبی، |
|
الگویی از مقالهی ویکیپدیا دربارهی گرافیک لاکپشتی |
|
|
لاکپشتهای رقصانی که بهصورت جفتی در جهت مخالف میچرخند |
شکلهای مرکب، |
|
نمایش بصری روشهای مختلف مرتبسازی |
چینش ساده، تصادفیسازی |
|
یک درخت پیمایش سطح اول (گرافیکی) (با استفاده از تولیدگرها) |
|
|
طراحی ساده |
لاکپشتها روی دو بوم |
|
مثالی سادهی دیگر |
لذت ببرید!