رسم اشکال گرافیکی در پایتون – به زبان ساده + کتابخانه ها و روش ها
برای رسم اشکال گرافیکی در پایتون، کتابخانههای مختلفی مانند «Turtle» و «Plotly» و «Matplotlib» و غیره وجود دارند. هر کدام از این کتابخانهها کاربردهای خاص خود را دارند. برای همین باید با توجه به پروژه، کتابخانه را انتخاب کنیم. از آنجا که زبان برنامه نویسی پایتون، بسیار گسترده شده و کاربردهای متنوعی پیدا کرده است، کتابخانههای مختلفی هم برای آن به وجود آمدهاند. به عنوان مثال، طراح نرمافزارهای دسکتاپ برای ساخت رابط گرافیکی ممکن است به اشکال هندسی نیاز داشته باشد. تحلیلگران داده نیز برای برجسته کردن تکههای نمودار از این اشکال استفاده میکنند. برای همین کاربردهای مختلف است که باید روش مورد نیاز خود را یاد بگیریم.
- با مهمترین ماژولهای پایتون برای رسم اشکال گرافیکی و کاربرد آنها آشنا میشوید.
- متوجه میشوید که Plotly چیست و چطور اشکال هندسی مانند مربع و دایره رسم را میکند.
- با Matplotlib آشنا شده و روش رسم مستطیل، دایره و مثلث را در آن یاد میگیرید.
- بعد از آشنا شدن با Tkinter و کاربرد آن روش رسم چند شکل را بر روی یک بوم میآموزید.
- متوجه میشوید که Pygame چه کاربردی داشته و چرا باید اشکال گرافیکی در آن رسم کرد.
- روش رسم اشکال گرافیکی در پایتون توسط PyQt را یاد میگیرید.


در این مطلب از مجله فرادرس، روشهای متفاوتی از رسم اشکال گرافیکی در پایتون را بررسی میکنیم. ابتدا با مفهوم این ویژگی و بعضی از پرکاربردترین کتابخانههای فرادرس آشنا میشویم. سپس یک به یک کتابخانهها را بررسی کرده و برای هر کدام چند مثال حل میکنیم.
روشهای رسم اشکال گرافیکی در پایتون
رسم اشکال گرافیکی در پایتون به معنای استفاده از کدهای این زبان برای ساخت شکلهای هندسی دوبعدی و سهبعدی است. پایتون زبان برنامه نویسی بسیار پرکاربردی است. از پروژههای مربوط به امنیت سایبری گرفته تا ساخت نرافزارهای دسکتاپ را میتوان با کمک پایتون انجام داد. یکی از کاربردهای این زبان هم مربوط به ساخت تصاویر گرافیکی است که از مصورسازی دادهها تا بازیسازی را پوشش میدهد.
در این مطلب، چند کتابخانه مختلف را برای رسم اشکال گرافیکی بررسی میکنیم.
- Plotly: کتابخانه Plotly برای مصورسازی دادهها به کار برده میشود. در این کتابخانه معمولا از اشکال گرافیکی برای علامتگذاری بخشهای خاصی از نمودارها استفاده میشود.
- Matplotlib: این کتابخانه در حوزه علم داده کاربرد زیادی دارد. برنامه نویسان با کمک اشکالی مانند دایره، مستطیل و غیره، دادههای موجود بر روی نمودار را برجسته میکنند.
- Tkinter: کتابخانه «Tkinter» یکی از بهترین ماژولها برای ساخت «GUI» در پایتون است. برای همین امکانات خاصی برای رسم اشکال گرافیکی در آن تعبیه شده است.
- Pygame: کتابخانه «Pygame» بیشتر در حوزه بازیسازی کاربرد دارد. در این فریمورک برای ساخت عناصر بازی، از اشکال گرافیکی استفاده میکنیم.
- PyQt: فریمورک «PyQt» یکی از بهترین فریمورکهای پایتون برای ساخت رابط کاربری گرافیکی است. شاید بخواهیم از اشکال گرافیکی مختلف در پنجرههای رابط کاربری خود استفاده کنیم.
- Turtle: این کتابخانه بیشتر برای سرگرمی و آموزش استفاده میشود. میتوان با آن شکلهای مختلف یا حتی بازیهای ساده ساخت. به همین دلیل، توابع آمادهای برای رسم انواع شکلها در آن قرار داده شدهاند.

در ادامه مطلب، همراه با مثالهای ساده، روش ساخت اشکال هندسی را در این کتابخانهها بررسی کردهایم.
| کتابخانه | کاربرد در رسم اشکال گرافیکی |
|---|---|
| Plotly | علامتگذاری بخشهای مهم نمودار |
| Matplotlib | برجستهکردن دادهها با دایره، مستطیل و دیگر شکلها |
| Tkinter | رسم شکلها برای ساخت رابطهای گرافیکی ساده |
| Pygame | استفاده از اشکال برای ساخت عناصر بازی |
| PyQt | استفاده از اشکال در پنجرههای رابط کاربری |
| Turtle | رسم شکلهای مختلف برای آموزش و سرگرمی |
رسم اشکال گرافیکی در پایتون با کمک Plotly
Plotly یکی از قدرتمندترین و مشهورترین کتابخانههای پایتون برای رسم اشکال و نمودارهای گرافیکی جذاب است. رسم نمودارهای ساده با Plotly بسیار آسان است. البته برای ساخت نمودارهای حرفهای و پیچیده به عناصر دیگری هم نیاز داریم. عناصری که توجه مخاطب را به بخشهای مهم نمودار جلب کنند. با استفاده از شکلهای هندسی روی نمودار میتوانیم مفاهیم و دادههای مهم را بهتر به کاربران نشان بدهیم. این نکته، مهمترین دلیلی است که کتابخانه Plotly از اشکال گرافیکی به روش بسیار مفید استفاده میکند. در این بخش از مطلب با چند مثال ساده، روش رسم اشکال گرافیکی در پایتون با کمک Plotly را بررسی میکنیم.
در تصویر پایین روش استفاده از این اشکال را بر روی نمودار مشاهده میکنید.

بررسی شکلهای کتابخانه Plotly
کتابخانه Plotly از چند شکل هندسی مختلف برای استفاده بر روی نمودارها پشتیبانی میکند. برای تعریف هر کدام از این شکلها باید دو پارامتر اصلی یعنی «نوع شکل» و «مختصات آن» را مشخص کنیم.
در فهرست پایین، مهمترین اشکال اولیه در کتابخانه plotly را به شکل خلاصه معرفی کردهایم.
- مستطیل» (Rectangle): برای تعریف نوع مستطیل از کد type: 'rect' استفاده میکنیم. نکته بعد مختصات آن است. برای مشخص کردن این پارامتر کافیست که فقط مختصات دو گوشه مخالف هم را به صورت (x0, y0) و (x1, y1) بنویسیم. مستطیل گزینه بسیار مناسبی برای سایه زدن در نواحی مهم یا پررنگ کردن پنجره خاصی از دادهها است.
- «خط» (Line): در زمان مشخص کردن این عنصر هندسی از کد استفاده type: 'line' میکنیم. مختصات خط را با نوشتن نقاط ابتدا (x0, y0) و انتهای آن (x1, y1) مشخص میکنیم.
- دایره» (Circle): برای مشخص کردن نوع این شکل از عبارت type: 'circle' استفاده میکنیم. در زمان رسم دایره باید مختصات مرکز و اندازه شعاع آن را مشخص کنیم. دایره، گزینه بسیار خوبی برای تاکید بر نقاط مجزایی از نمودار یا خوشههای کوچک اطلاعات است. توجه کنید که اغلب اوقات برای ایجاد دایره باید نسبت ابعاد محورها را هم تنظیم کنیم. با این کار از تبدیل دایره به بیضی جلوگیری میکنیم.
- مسیر» (Path): مسیر یا Path برای وقتی است که میخواهیم شکلهای پیچیده رسم کنیم. برای این کار از رشته «SVG» به صورت path استفاده میکنیم. در زمان رسم path باید از مجموعهای از دستورات مشخص استفاده کنیم. چند نمونه از این دستورات را در فهرست پایین نوشتهایم.
- M برای حرکت
- L برای متصل کردن خط
- Z برای بستن مسیر

با کمک این دستورات میتوان هر شکلی را رسم کرد. استفاده از path انعطافپذیرترین گزینه برای رسم اشکال حاشیهای و هندسی است. درک این نوعهای اولیه، اولین قدم برای تسلط بر حاشیهنویسیهای بصری در شکلهای plotly شماست.
| شکل | کد مورد استفاده در Plotly | کاربرد و توضیح خلاصه |
|---|---|---|
| مستطیل | type: rect | تعریف با دو نقطه مخالف، مناسب سایهزدن و مشخصکردن بخشهای مهم نمودار |
| خط | type: line | تعریف با نقطه شروع و پایان، مناسب برای خطوط راهنما یا علامتگذاری |
| دایره | type: circle | نیاز به مرکز و شعاع، برای تاکید روی نقاط یا خوشهها |
| مسیر | type: path | رسم شکلهای پیچیده با دستورات SVG، مناسب برای فرمهای غیرمنظم، |
رسم شکل در plotly با کمک مثال
متد fig.add_shape() مهمترین ابزار برای رسم اشکال مختلف بر روی نمودارهای plotly است. این متد، تابعی از شیء plotly.graph_objects.Figure است. ابتدا باید نمودار یا تصویر اولیه خود را رسم کنیم. به عنوان مثال میتوان به نمودارهای پراکندگی یا خطی اشاره کرد. سپس متد add_shape() را فراخوانی میکنیم تا اشکال را مانند لایهای بر روی نمودار اصلی رسم کنند.
تا اینجای مطلب به مفهوم رسم اشکال گرافیکی در پایتون و کتابخانههای مناسب برای این وظیفه آشنا شدهاید. در ادامه مطلب هر کدام از این کتابخانهها را با چند مثال ساده بررسی کردهایم. اما در صورت تمایل به مطالعه این نوع از مطالب پیشنهاد میکنیم که از اپلیکیشن مجله فرادرس استفاده کنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
این تکنیک مناسب زمانهایی است که میخواهیم اشکال خود را با روشهای برنامه نویسی و بر اساس شرایط یا مقدارهای مشخص و حتی پویا رسم کنیم. در مثال ساده پایین ناحیه خاصی را بر روی نمودار زمانی پررنگتر کردهایم.
بعد از اجرای کدهای بالا، تصویر زیر تولید شده و نمایش داده میشود.

تقویت مهارت برنامه نویسی پایتون با کمک فرادرس
زبان برنامه نویسی پایتون یکی از پرمخاطبترین زبانهای برنامه نویسی در دنیاست. زیرا سینتکس ساده و ماژولهای بسیار متنوع آن باعث شدهاند که در حوزههای متنوعی به کار برده شود. کاربرد پایتون در صنعت بسیار گسترده است. اما برای پیدا کردن شغل مناسب باید مهارت برنامه نویسی خود را تقویت کنیم. یکی از بهترین راهها برای تقویت مهارت برنامه نویسی پایتون استفاده از فیلمهای آموزشی است. وبسایت فرادرس به عنوان قویترین و بزرگترین وبسایت آموزشی فارسی درباره زبان برنامه نویسی پایتون، فیلمهای آموزشی بسیار خوبی تهیه کرده است.

فیلمهای آموزشی فرادرس به دلیل هزینه مقرونبهصرفه، عدم وابستگی به زمان و کیفیت خوب، گزینه بسیار مناسبی برای یادگیری هستند. سایت فرادرس فیلمهایی متناسب با سطوح علمی مختلف را برای دانشجویان تولید کرده است. این فیلمهای آموزشی با دقت و حساسیت بالایی در انتخاب استاد و روش تدریس و حتی کیفیت محتوا تولید شدهاند. در صورت علاقهمندی به افزایش مهارت در زبان برنامه نویسی پایتون، دورههای زیر گزینههای خوبی برای یادگیری هستند.
- فیلم آموزش رایگان کتابخانه های پایتون برای یادگیری ماشین و یادگیری عمیق + گواهینامه
- فیلم آموزش ویژوال پایتون، برنامه نویسی پایتون بدون کدنویسی با Visual Python + گواهینامه
- فیلم آموزش بازی سازی در پایتون با کتابخانه Pygame
- فیلم آموزش رایگان معرفی رابط های گرافیکی پایتون
- فیلم آموزش کتابخانه استاندارد پایتون + نکات کاربردی + گواهینامه
رسم اشکال گرافیکی در پایتون با کمک Matplotlib
کتابخانه Matplotlib مجموعهای از کلاسها و توابع را با هدف کمک به رسم اشکال مختلف بر روی نمودارها ارائه داده است. فرقی نمیکند که درحال حاشیهنویسی هستید، دیاگرام میسازید یا مشغول مصورسازی دادهها هستید. درک روش درست استفاده از این ابزارها به برنامه نویسان درباره ساخت نمودارهای زیبا، جذاب و پر از اطلاعات کمک میکند.
قبل از رسم نمودار در Matplotlib باید با مفاهیم زیر آشنا باشید.
- Matplotlib: کتابخانه بسیار جامع برای رسم نمودارهای مختلف در پایتون است. با کمک این فریمورک میتوان نمودارهای ایستا، پویا و جذابی بر اساس دادهها ایجاد کرد.
- Axes: ناحیهای که دادههای خود را بر روی آن رسم میکنید. تمام اشکال بر روی این محورها رسم میشود.
- پچها: مجموعهای از کلاسها در Matplotlib که برای رسم اشکالی مانند مستطیل، دایره و چندضلعی به کار برده میشوند.

در زمان رسم شکل در Matplotlib ابتدا باید صفحه مناسبی به عنوان صفحه کار رسم کنیم. برای رسم صفحه از کد زیر استفاده میکنیم.
در ادامه این بخش از مطلب، روش رسم چند شکل را با کمک Matplotlib و مثال ساده بررسی کردهایم.
رسم مستطیل با کمک Matplotlib
برای رسم مستطیل در این کتابخانه باید از تابع Rectangle() استفاده کنیم. این تابع از matplotlib.patches به محیط کدنویسی اضافه میشود. در کادر پایین، ابتدا یک صفحه با دو محور عمودی و افقی ساختهایم. سپس با کمک این تابع مستطیل مورد نظر خود را ایجاد میکنیم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- در دو خط اول ابزارهای pyplot و Rectangle را به برنامه اضافه میکنیم.
- در خط سوم شکل fig و محور ax را برای رسم میسازیم.
- در خط بعد یک مستطیل با مختصات (0.2 , 0.2)، عرض 0.5 و ارتفاع 0.3 ساخته شده و رنگ لبهها و داخل آن را تنظیم میکنیم.
- سپس با add_patch مستطیل را به نمودار اضافه متصل میکنیم.
- در خطوط ۷ و ۸ محدوده محورهای x و y را روی 0 تا 1 تنظیم میکنیم.
- در خط ۹، نسبت محورها مساوی هم قرار داده میشود.
- در خط ۱۰ و ۱۱، شبکه فعال شده و عنوانی به نمودار اختصاص داده میشود.
- در نهایت با plt.show() نمودار همراه مستطیل نمایش داده میشود.

رسم دایره با کمک Matplotlib
در کادر پایین با کمک matplotlib دایرهای بر روی صفحه کار خود رسم کردهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- در خطوط ۱ و ۲: کتابخانهmatplotlib.pyplot و کلاس Circle برای ساخت دایره ایمپورت میشوند.
- در خط چهارم: شکل fig و محور ax را برای رسم ساخته میشود.
- در خط ۵: دایرهای با مرکز (0.5 , 0.5) و شعاع 0.2 ساخته شده و رنگ دور آن قرمز و رنگ داخل آن صورتی روشن تنظیم میشود.
- در خط۶: دایره با add_patch به محور اضافه میشود.
- از خط ۷ تا ۹: محدوده محورهای x و y روی 0 تا 1 تنظیم شده است. همچنین نسبت محورها مساوی قرار داده شده تا دایره به شکل درست، نمایش داده شود.
- در خطوط ۹ و ۱۰: شبکه فعال شده و نام مرتبطی به نمودار تخصیص داده میشود.
- در آخر: با متد plt.show() دایره روی نمودار نمایش داده میشود.
رسم مثلث با کمک matplotlib
با کمک کدهای زیر، ابتدا صفحهای دوبعدی و شطرنجی ایجاد کرده و سپس بر روی آن مثلث خود را رسم میکنیم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- در خطوط ۱ و ۲: کتابخانه plt و کلاس Polygon وارد برنامه میشوند.
- در خط ۴: شکل fig و محور ax را برای رسم ساخته میشود.
- در خط ۵: چندضلعی با سه راس مشخصشده ساخته میشود. رنگ دور آن سبز و رنگ داخل آن سبز روشن قرار داده شده است. هر چند ضلعی که سه راس داشته باشد مثلث است.
- در خط ۶: با دستور add_patch این شکل به محور اضافه میشود.
- در خط ۷ و ۸ و ۹: محدوده محورهای x و y روی 0 تا 1 تنظیم شده و نسبت محورها مساوی هم قرار داده میشود. در نتیجه شکل بدون تغییر عجیب در ظاهر، نمایش داده خواهد شد.
- در خطوط ۱۰ و ۱۱: شبکه فعال شده و نام مرتبطی به نمودار تخصیص داده میشود.
- در خط۱۲: با کمک تابع plt.show() چندضلعی نمایش داده میشود.
رسم اشکال گرافیکی در پایتون با کمک Tkinter
Tkinter کتابخانه استاندارد برای ساخت GUI در پایتون است. ویجت بوم یا Canvas، یکی از ابزارهای بسیار قدرتمند این کتابخانه است. با کمک این ویجت میتوانیم اشکال هندسی مختلفی را بسازیم. ویجت Canvas در Tkinter فضای بسیار خوبی برای رسم اشکال گرافیکی دوبعدی است. در صورت تمایل به یادگیری استفاده از Tkinter پیشنهاد میکنیم که فیلم آموزش کتابخانه Tkinter در پایتون برای توسعه اپلیکیشن های دسکتاپ را در فرادرس مشاهده بکنید. برای کمک به مخاطبان مجله، لینک این فیلم را در پایین نیز قرار دادهایم.
در این بخش از مطلب اشکال مختلفی مانند بیضی، مستطیل، قوص و چندضلعی را با استفاده از کلاس Canvas رسم میکنیم.
رسم اشکال مختلف بر روی بوم در Tkinter
در کد پایتون پایین از کتابخانه tkinter برای ساخت رابط کاربری گرافیکی ساده استفاده کردهایم. میخواهیم بر روی پنجره ساخته شده، اشکال گرافیکی مختلفی را به صورت همزمان رسم کنیم.
- با کمک کلاس Shape متدهایی برای رسم بیضی، مستطیل، زاویههای مختلف و چندضلعیها تعریف میکنیم.
- سپس این اشکال را با رنگهای مختلف و خطوط ضخیم تزئین میکنیم.
- Canvas در پنجره اصلی قرار میگیرد.
- برنامه در حلقه رویداد tkinter اجرا شده و امکان نمایش تعاملی اشکال را فراهم میکند.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- با کمک کلاس Shape بوم یا Canvas ایجاد میکنیم.
- سپس با استفاده از متدهایی مانند create_oval و create_rectangle و create_arc و create_polygon شکلهای مختلف را روی بوم رسم میکنیم.
- اندازه و موقعیت پنجره با دستور geometry() تنظیم شده و چیدمان عناصر با متد pack() مدیریت میشوند.
- دستور mainloop() برنامه را فعال و پنجره را باز نگه میدارد.
رسم اشکال گرافیکی در پایتون با کمک Pygame
کتابخانه Pygame با هدف کمک به ساخت بازیهای کامپیوتری با پایتون طراحی شده است. در زمان ساخت بازیهای دوبعدی و سهبعدی باید از اشکال هندسی به عنوان عناصر بازی استفاده کنیم. بنابراین کتابخانه Pygame نیز ابزارهایی را برای رسم اشکال گرافیکی در پایتون فراهم کرده است. در صورت تمایل به یادگیری بازیسازی با پایتون پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.
با استفاده از متد draw در pygame به راحتی میتوانیم اشکال مختلفی را در پایتون رسم کنیم. در این بخش از مطلب، چند شکل هندسی را با کمک کتابخانه Pygame رسم میکنیم.
رسم مستطیل با کمک Pygame
برای رسم مستطیل در پروژههای Pygame از تابع draw.rect() استفاده میکنیم. سینتکس این تابع را در پایین نوشتهایم.
این سینتکس 4 پارامتر اصلی دارد.
- surface: در این بخش سطحی، را معرفی میکنیم که باید مستطیل بر روی آن رسم شود.
- color : در این پارامتر رنگ مستطیل مورد نظر را مشخص میکنیم.
- rect: در این قسمت هم موقعیت و ابعاد مستطیل را مشخص میکنیم.
- width: در این بخش نیز ضخامت خط را مشخص میکنیم. با تغییر دادن مقدار این پارامتر حتی میتوان مستطیل توپر ساخت.
در کدهای پایین مستطیلی با همین سینتکس تعریف کردهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- در ابتدا ماژول pygame وارد و با pygame.init() فعال میشود. در این صورت میتوان از قابلیتهای آن استفاده کرد.
- سپس پنجرهای با اندازه (600, 600) با set_mode() ساخته شده و با رنگ زرد کمرنگ پر میشود.
- با استفاده از pygame.draw.rect مستطیل آبی در مختصات (100 , 100) با اندازهی 400×100 و ضخامت 5 پیکسل رسم میکنیم.
- در پایان هم با کد pygame.image.save تصویر را در فایل ذخیره کرده و با Image() نمایش میدهیم. البته میتوانید با کد pygame.display.update() نیز تغییرات را به شکل مستقیم روی صفحه نمایش بدهید.
رسم دایره با کمک pygame
برای رسم دایره در پروژههای pygame از تابع draw.circle() استفاده میکنیم. روش کلی این عملیات شبیه به روش ساخت مستطیل است. فقط تابع و پارامترها به ترتیب تغییر کردهاند.
در کادر پایین، سینتکس مورد استفاده برای رسم دایره دیده میشود.
در سینتکس بالا ۵ پارامتر اصلی وجود دارند. این پارامترها را در فهرست پایین معرفی کردهایم.
- surface: در این پارامتر همان سطحی را معرفی میکنیم که دایره بر روی آن رسم میشود.
- color: در این پارامتر هم باید رنگ دایره را مشخص کنیم.
- center: در این پارامتر باید مختصات مرکز دایره را به شکل ( x, y ) ثبت کنیم.
- radius: در این پارامتر اندازه شعاع دایره را مشخص میکنیم.
- width: این پارامتر هم ضخامت خط را مشخص میکند. با تنظیم این پارامتر میتوانیم دایره توپر بسازیم.
در کادر پایین، کدهای مربوط به رسم دایره توپر را نوشتهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- ابتدا ماژول pygame وارد شده و با pygame.init() فعال میشود.
- پنجرهای با set_mode() ساخته و صفحه آن را با رنگ زرد لیمویی پر میشود.
- سپس با استفاده از کد pygame.draw.circle دایرهی سبز با مرکز (300, 300) و شعاع 170 روی صفحه رسم میشود.
- در پایان هم با کد pygame.image.save تصویر را در فایل ذخیره کرده و با Image() نمایش میدهیم. البته میتوانید با کد pygame.display.update() نیز تغییرات را به شکل مستقیم روی صفحه نمایش بدهید.
رسم چند شکل در کنار یکدیگر
کتابخانه pygame به توسعهدهندگان این امکان را میدهد که چند شکل مختلف در کنار هم و بر روی سطح مشترک ایجاد بکنند. در مثال زیر، روش رسم چند شکل مختلف بر روی هم و در سطح مشترک را پیادهسازی کردهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- ابتدا ماژول pygame را وارد کرده و با دستور pygame.init() برنامه را آماده استفاده از امکانات آن میکنیم.
- پنجرهای با اندازه (600, 600) پیکسل میسازیم و آن را با رنگ زرد لیمویی پر میکنیم.
- با دستور pygame.draw.rect مستطیل آبی روی صفحه رسم میکنیم.
- سپس با کد pygame.draw.circle دایره سبز را داخل همان مستطیل میکشیم.
- در آخر با pygame.display.update() صفحه را بهروزرسانی میکنیم تا شکلها نمایش داده شوند.
رسم اشکال گرافیکی در پایتون توسط PyQt
PyQt یکی از کتابخانه های گرافیکی پایتون است. این کتابخانه برای رسم رابط کاربری گرافیکی یا GUI در پایتون به کار برده میشود. در این قسمت از مطلب، چند شکل ساده و چندضلعی را با کمک PyQt رسم میکنیم.
رسم چندضلعی در PyQt
به منظور رسم چندضلعی در پایتون میتوان از متدهای createPoly() یا QPolygon() استفاده کرد. برای استفاده از این متدها باید آنها را با تابع drawPolygon() فراخوانی بکنیم. در مثال پایین از متدی به نام createPoly() استفاده کردهایم. این متد برای رسم چندضلعی در PyQt به کار برده میشود.
بعد از نوشتن و اجرای کدهای بالا شکل زیر در پنجره مستقل ساخته شده و ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- ابتدا کتابخانه math و چند ابزار از کتابخانه PyQt6 را وارد میکنیم تا بتوانیم پنجره و شکلها را بسازیم.
- در کلاس MyWidget، یک پنجره600×600 میسازیم.
- تابع createPoly نقطههای ۸ضلعی را با استفاده از زاویه، سینوس و کسینوس محاسبه میکند.
- سپس با تابع createPoly شکل ۸ ضلعی میسازیم. راسهای آن با استفاده از فرمولهای سینوس و کسینوس محاسبه میشوند.
- در تابع paintEvent، شیء QPainter ساخته میشود. خط دور شکل با رنگ آبی و ضخامت ۴ تنظیم میشود. رنگ داخل شکل نیز به زرد روشن تغییر میکند.
- در نهایت این ۸ضلعی روی صفحه رسم میشود.
- در پایان برنامه، تصویر مورد نظر ساخته شده و برنامه PyQt در حالت اجرا باقی میماند.
رسم مثلث در PyQt
در این مثال میخواهیم با کمک متدهایی مانند QPolygon() و QPoint() و setGeometry() مثلث رسم کنیم. در فهرست پایین، کلاسهای QPolygon و Qpoint را تعریف کردهایم.
- QPolygon(): کلاس QPolygon دارای «سازنده» (Constructor) داخلی به نام QPolygon() است که لیست نقاط را با دقت «عدد صحیح» (Integer Precision) ذخیره میکند.
- Qpoint(): کلاس QPoint عملکرد مشابه با QPolygon دارد. با این تفاوت که کلاس QPoint از دو پارامتر x و y برای ذخیره کردن مختصات استفاده میکند.
توجه کنید که میتوانیم بدون هیچ محدودیتی از QPoint() بر روی کلاس QPolygon استفاده کنیم. یعنی برای اضافه کردن نقطههای بیشتر مشکلی وجود ندارد و به راحتی میتوانیم از کلاس QPoint() کمک بگیریم. در مثال پایین با کمک این کلاسها شکل مثلث ساختهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- ابتدا کتابخانههای لازم را از PyQt6 وارد میکنیم. با کمک این کتابخانهها میتوانیم شکلهای گرافیکی رسم کنیم.
- کلاسی به نام Example میسازیم که از QWidget ارث بری میکند. در متد __init__()، اندازه و موقعیت پنجره را تعیین میکنیم. متد __init__ در پایتون به عنوان «سازنده» (Constructor) کلاس، شناخته میشود.
- متد paintEvent مسئول رسم شکل روی پنجره است.
- در خط ۱۱، ابتدا شیء QPainter میسازیم تا بتوانیم روی صفحه نقاشی کنیم.
- در خطوط ۱۲ و ۱۳ رنگ خط را مشکی و رنگ داخل شکل را صورتی روشن تنظیم میکنیم.
- با استفاده از QPoint سه نقطه میسازیم و در QPolygon قرار میدهیم. این سه نقطه رأسهای مثلث هستند.
- با دستور qp.drawPolygon(points) مثلث روی پنجره کشیده میشود.
- در بخش پایانی برنامه، شیئی از روی کلاس QApplication میسازیم. سپس نمونهای هم از کلاس Example میسازیم. پنجره را نمایش میدهیم و با app.exec() حلقه اصلی Qt را اجرا میکنیم تا برنامه باز بماند.
یادگیری پایتون با اجرای پروژه
هدف اصلی از یادگیری رسم اشکال گرافیکی در پایتون این است که بتوانیم در پروژههای خود از آنها استفاده کنیم. برای مثال میتوان به ساخت رابط کاربری گرافیکی یا بازیسازی اشاره کرد. البته برای پیادهسازی پروژههای واقعی به مهارتهای متنوعی نیاز داریم. باید بتوانیم با ابزارهای کاربردی مانند حلقهها، عبارتهای شرطی و انواع ساختارهای ذخیره داده و غیره به خوبی کار کنیم. بهترین روش برای یادگیری این مهارتها استفاده از آنها در زمان ساخت پروژه است. این روش، تاثیر بسیار زیادی در نهادینه کردن تکنیکهای برنامه نویسی دارد.
برای یادگیری پایتون با اجرای پروژه، در این قسمت چند مورد از فیلمهای آموزشی بسیار خوب فرادرس را به شما پیشنهاد میدهیم.
- فیلم آموزش پروژه محور پایتون، کار با Tkinter و SQLite3 در Python + گواهینامه
- فیلم آموزش پروژه محور پایتون، ساخت برنامه هواشناسی آنلاین در Python
- فیلم آموزش پروژه محور پایتون درباره ساخت بازی Snake
- فیلم آموزش پروژه محور پایتون درباره ساخت بازی حافظه تصویری با کتابخانه Tkinter و Turtle + گواهینامه
- فیلم آموزش پروژه محور پایتون درباره طراحی گرافیکی با PyQt و بدون کدنویسی با QT Designe
برای مشاهده فیلمهای بیشتر بر روی تصویر زیر کلیک کنید.

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

رسم مربع توپر
در کادر پایین، روش ساختن مربع توپر با استفاده کتابخانه Turtle را کدنویسی کردهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین، روش کار کدهای بالا را نوشتیم.
- ابتدا ماژول turtle را وارد کرده و شیء Turtle را از روی آن میسازیم.
- رنگ داخل شکل را با کد tt.fillcolor("blue") آبی قرار میدهیم.
- با tt.begin_fill() پایتون نقطه شروع رسم چندضلعی را برای رنگآمیزی به خاطر میسپارد.
- با حلقه for یک مربع با ضلع 150 پیکسل میکشیم و در هر ضلع با tt.right(90) جهت را تغییر میدهیم.
- با کد tt.end_fill() اعلام میکنیم که رسم چندضلعی به پایان رسیده است و الان برنامه باید داخل آن را با رنگ آبی پر کند.
- در پایان با دستور turtle.done() برنامه متوقف شده و پنجره باز میماند.

رسم دایره توپر با Turtle
در کادر پایین، دایره توپری با کمک کتابخانه turtle در پایتون ساختهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- ابتدا ماژول turtle را وارد کرده و شیء Turtle را از روی آن میسازیم.
- رنگ داخل شکل را با tt.fillcolor("blue") آبی قرار میدهیم.
- با tt.begin_fill() نقطه شروع رسم دایره را برای رنگآمیزی به خاطر میسپارد.
- با کد tt.circle(100) دایرهای با شعاع 100 پیکسل رسم میکنیم.
- با دستور tt.end_fill() داخل دایره را با رنگ آبی پر میکنیم.
- در پایان با turtle.done() برنامه متوقف شده و پنجره باز میماند.
رسم مثلث توپر با Turtle
در این مثال، از کتابخانه Turtle برای رسم مثلث توپر کمک گرفتهایم.
بعد از اجرای کدهای بالا خروجی به شکل زیر ظاهر میشود.

در فهرست پایین روش کار کدهای بالا را نوشتیم.
- ابتدا ماژول turtle را وارد کرده و شیء Turtle میسازیم.
- رنگ داخل شکل را با کد tt.fillcolor("blue") بر روی آبی تنظیم میکنیم.
- با tt.begin_fill() پایتون، نقطه شروع رسم چندضلعی را برای رنگآمیزی به خاطر میسپارد.
- با حلقه for مثلثی با اندازه اضلاع 150 پیکسل رسم کرده و در هر راس با کد tt.left(120) اندازه زاویه را تنظیم میکنیم.
- با کد tt.end_fill() اعلام میکنیم که رسم چندضلعی به پایان رسیده است. الان پایتون باید داخل آن را با رنگ آبی پر کند.
- در پایان هم با کد turtle.done() برنامه متوقف شده و پنجره باز میماند.
جمعبندی
در این مطلب از مجله فرادرس، روشهای متنوع رسم اشکال گرافیکی در پایتون را بررسی کردیم. برای مثال، کتابخانه Plotly میتواند با متد add_shape() روی نمودارها مستطیل، خط، دایره و مسیرهای SVG رسم کند. Matplotlib با کلاسهای Rectangle و Circle و Polygon برای رسم شکل و حاشیهنویسی حرفهای مناسب است. Tkinter با ویجت Canvas و متدهای create_oval و create_rectangle و create_polygon رابط کاربری ساده میسازد. Pygame با ماژول draw برای ساخت بازی و انیمیشن سرعت خوبی دارد. PyQt با QPainter و QPolygon برای ساخت برنامههای گرافیکی پیشرفته استفاده میشود. Turtle هم به عنوان ابزار آموزشی ساده، شکلهایی مثل مربع، دایره و مثلث را راحت رسم میکند.
قبل از انتخاب ماژول باید حتما به پروژه خود توجه کنیم. برای مثال کار با کتابخانههای Plotly و Matplotlib در پروژههای مربوط به دادهکاوی مناسب است. در پروژههای بازیسازی هم بهتر است از کتابخانههای Pygame یا Turtle استفاده بکنیم.












