سؤال 2: تدريب 2: أنشئ مقطعًا برمجيًا لرسم الأشكال الآتية:
الإجابة: س2: - أنشئ نافذة Tkinter و Canvas بخلفية سوداء. - ارسم دائرتين (Oval) على اللوحة: - دائرة خضراء يسارًا. - دائرة صفراء يمينًا. - اجعل لون التعبئة مطابقًا للون الدائرة.
خطوات الحل:
- | البند | الوصف | |--------|--------| | **المطلوب** | إنشاء مقطع برمجي لرسم دائرتين على لوحة رسومية. | | **الشكل 1** | دائرة خضراء على الجانب الأيسر. | | **الشكل 2** | دائرة صفراء على الجانب الأيسر. | | **البيئة** | استخدام مكتبة Tkinter في Python. | | **التفاصيل** | خلفية اللوحة سوداء، ولون تعبئة كل دائرة مطابق للون حدودها. |
- **المبدأ المستخدم:** استخدام عناصر واجهة `Tkinter`، وتحديداً كائن `Canvas` لرسم الأشكال الهندسية.
- 1. **استيراد المكتبة:** نبدأ باستيراد وحدة `tkinter` بأكملها أو الفئات المطلوبة منها. python import tkinter as tk
- 2. **إنشاء النافذة الرئيسية:** نقوم بإنشاء النافذة الرئيسية للتطبيق. python window = tk.Tk() window.title("رسم دوائر ملونة")
- 3. **إنشاء لوحة الرسم (Canvas):** ننشئ لوحة الرسم داخل النافذة ونحدد خلفيتها باللون الأسود. python canvas = tk.Canvas(window, width=400, height=300, bg='black') canvas.pack()
- 4. **رسم الدائرة الخضراء (اليسار):** نستخدم دالة `create_oval` لرسم بيضاوي (دائرة هنا). نحدد إحداثيات الزاوية العلوية اليسرى والسفلية اليمنى للمربع المحيط، ولون التعبئة (`fill`) والحدود (`outline`). python # دائرة خضراء على اليسار (إحداثيات x1, y1, x2, y2) left_circle = canvas.create_oval(50, 100, 150, 200, fill='green', outline='green')
- 5. **رسم الدائرة الصفراء (اليمين):** نكرر العملية مع إحداثيات مختلفة على الجانب الأيمن من اللوحة ولون مختلف. python # دائرة صفراء على اليمين right_circle = canvas.create_oval(250, 100, 350, 200, fill='yellow', outline='yellow')
- 6. **تشغيل التطبيق:** أخيراً، ندخل الحلقة الرئيسية لتطبيق `Tkinter` لعرض النافذة. python window.mainloop()
- > **ملاحظة:** يمكن تغيير أبعاد النافذة (`width`, `height`) وإحداثيات الدوائر (`x1, y1, x2, y2`) لتحقيق التنسيق المرغوب. **النتيجة النهائية:** سيعرض البرنامج نافذة ذات خلفية سوداء، تحتوي على **دائرة خضراء** في الجزء الأيسر و**دائرة صفراء** في الجزء الأيمن من اللوحة الرسومية.