عندما اغلق اللعبة حقت ping pong يظهر لي هذا الخطأ
هل احد يعرف السبب وشكرا
طيب تاكد كده من ال() window.exitonclic معموله صح ولا لا
الخطأ بيحصل لأن الكود بيحاول يعمل bind
لحدث بعد إغلاق النافذة. الحل هو التأكد من عدم ربط أي أحداث أو استخدام أوامر على النافذة بعد إغلاقها. ممكن تضيف شرط للتحقق من إن النافذة لسه موجودة قبل أي عملية bind
أو تلغي الأحداث المرتبطة قبل إغلاق التطبيق.
ما فهمت والله بس ممكن توضح وتعطي مثال
الخطأ اللي بيظهر بيحصل لأن الكود بيحاول يعمل ربط (bind
) لحدث معين (زي ضغط زر معين) بعد ما النافذة الرسومية للعبة اتقفلت. ببساطة، مش مسموح إنك تتعامل مع نافذة اتقفلت أو دُمّرت بالفعل.
المشكلة:
في اللعبة بتاعتك، لما بتقفل النافذة، الكود بيحاول ينفذ أمر على حاجة مش موجودة (النافذة اتقفلت)، وده اللي بيعمل الخطأ.
الحل:
لازم تتأكد إن النافذة لسه موجودة قبل ما تحاول تربط أي أحداث. كمان ممكن تلغي أي أحداث مرتبطة بالنافذة قبل ما تقفلها.
مثال عملي:
إنت مثلاً ممكن تكتب كود يتحقق إذا النافذة لسه موجودة قبل ما تحاول تربط أي حدث. هنا مثال بسيط:
import turtle
# إنشاء نافذة اللعبة
window = turtle.Screen()
# تعريف وظيفة لتتحقق من وجود النافذة قبل ربط الحدث
def check_window_and_bind():
if window._root is not None: # تحقق إذا النافذة موجودة
window.onkey(None, "space") # ربط حدث بالضغط على المسافة
# إغلاق النافذة بعد مدة قصيرة (مثلاً لمحاكاة إغلاق اللعبة)
def close_window():
window.bye() # إغلاق النافذة
window.listen() # تفعيل الاستماع للأحداث
window.onkey(close_window, "q") # إغلاق النافذة عند الضغط على "q"
# اختبار الكود
check_window_and_bind() # محاولة ربط حدث لو النافذة موجودة
window.mainloop() # تشغيل النافذة
إيه اللي بيحصل هنا:
- بنعمل نافذة للعبة باستخدام مكتبة
turtle
. - بنعمل وظيفة
check_window_and_bind
علشان تتأكد إن النافذة موجودة قبل ربط أي حدث. - لما تضغط على “q”، النافذة بتتقفل.
جرب تحط الكود ده أو حاجة مشابهة في مشروعك، بحيث قبل أي عملية ربط (bind
) تتأكد إن النافذة لسه مفتوحة.
عندي طريقة عملتها وتحلت في الكود بتاعي وهي كالتالي
اكت امر try وحط في الكود وبعديها حط expert وداخلها pass كما في المثال
try:
ضع الكود كاملا في الداخل هنا عدا المكتبات المصدرة
expert:
pass
ال expert ده مش موجوده
ال try اه موجوده لكن ال expert لا مش موجوده
عفوا اخطات في الكتابة الأمر اسمه except عشان في مصحح تلقائي للكتابة قام وحط لي كلمة expert بدل except
try:
ضع الكود كاملا في الداخل هنا عدا المكتبات المصدرة
except:
pass
هو لعبة ال snake game هي بس اللي مطلعتش كده
لكن ping pong او اي مشروع تاني بيطلعلي نفس الخطأ حتى لما عملت الtry و ال except
اعمل مثل دا المثال
from turtle import Screen
try:
window = Screen()
window.setup(750,615)
window.cv._rootwindow.resizable(False, False)
window.bgcolor("#020202")
window.title("Language : اختيار اللغة")
window.listen()
window.tracer(0)
if lang == "2":
title = "Snake Game Version: 1.27"
font = "Arial"
font1 = "System"
font2 = "Fixedsys"
fontsnakegame = "system"
sizesnakegame = 100
gotosnakegame = -100
snakegame = "Snake\nGame"
version = "snake game version: 1.27, Programer: Badr-den alk"
enterGame = "Press Enter to start game"
enterMode = f"Choose your preferred game mode\n{" "*15}to start playing."
classicmode = "1: Classic game"
boder = "2: Border game"
obstacles = "3: Obstacles game"
sizeobs = 27
tip1 = "Press Options 1 to Classic game, 2 to Border game, 3 to Obstacles game"
scorec = "Score"
modeclassic = "Classic game"
gotocla = 158
modeboder = "Border game"
gotobor = 165
modeobstacles = "Obstacles game"
gotoobs = 118
gameover = "Game Over"
final = "Final Score"
again = "1: Play again"
mode_menu = "2: Mode Menu"
exit_game = "3: Exit Game"
tip2 = "Press Options 1 to Play again, 2 to Mode Menu, 3 to Exet Game"
except:
pass
وبعديها صدر اللعبة تاني
فعلا انحلت المشكلة شكراً لك
@badr_den
وشكرا للجميع
العفو اخي بارك الله فيك
المصحح شغال في اللاب ؟ اذا نعم
اعطني اسمه من فضلك
هو بجي مع ويندوز بس انت لازم تفاعله من الاعدادات خاصية التصحيح التلقائي
خش على الاعدادات
ويعديها ادخل على devises
وبعدها ادخل على خانة typing
وحدد على الخيارات الثلاثة وفعلهم كما في الصورة
ودا مثال وانا بكتب كلمة dark حط لي عدة خيارات فانا من العجلة لما كنت بكتب للزميل كتبت جزء من الكلمة فحط لي الخيارات دي وحطيت الخيار الخطا
جزاك الله خير اسف تعبتك
اخر سوال معلش
هو اشتغل انجلش بس
ما يشتغل للعربي ؟
لست متاكد ولكن لا اظن بان اللغة العربية مدعوم فيها هذه الخاصية انظر في الصورة عندما دخلت على اللغات اللغة العربية فقط بها ميزتان واما الانجليزية فيها كل الميزات والخصائص
غريبة الويندوز هذه
مع ان اضعف اجهزة الاندريد تدعم هذه الميزة
كتر خيرها سويت لك لغة عربية في الونيدوز
غير كافي مقارنة بالسعر الي كحيته
لا اخي واجبي اني اشارك معاكم الحلول بالعكس ان بكون مبسوط جدا لما احل مشكلة الاخوة بارك الله فيهم
بالنسبة لسؤالك نعم هذا الخطا ما بعطل اي شيء بالكود هذا الخطا فقط يظهر لك الخطا التي حدث عندما قمت باقفال اللعبة بشكل مفاجئ لان الاكواد لم تكمل عملها لذلك تظهر النافذة بكتابة اسماء الاكواد التي لم يتم اكمال عملها اثناء اقفالك للعبة بشكل مفاجئ