มีวิธีปิดหน้าต่างโดยไม่ต้องออกจาก pygame [ซ้ำกัน] หรือไม่

ฉันได้ลองค้นหาวิธีแก้ปัญหาจากคำถามอื่นๆ หลายครั้งแล้ว แต่ฉันไม่แน่ใจว่าจะสามารถนำวิธีเหล่านั้นไปใช้กับโปรแกรมของฉันได้อย่างถูกต้องหรือไม่ เลยตัดสินใจถามที่นี่

มีวิธีง่ายๆ ในการปิดหน้าต่างใน pygame ในขณะที่เปิด pygame ไว้และสามารถทำงานให้เสร็จสิ้นได้หรือไม่? ฉันใช้:

pygame.quit()

แต่มันออกจากโปรแกรม

ใครมีความคิดบ้างไหม?


person JayRoy    schedule 17.03.2020    source แหล่งที่มา


คำตอบ (1)


ทำ pygame.display.quit() เพื่อปิดหน้าต่างโดยไม่ต้องออกจาก pygame

person Sven    schedule 17.03.2020
comment
ฉันได้ลองสิ่งนี้แล้ว แต่ในโค้ดที่ฉันกำลังดำเนินการอยู่ มีข้อผิดพลาดเกิดขึ้นที่แจ้งว่าจอแสดงผล Surface ออก ยังคงมีโค้ดที่จำเป็นต้องทำงานหลังจากที่ฉันปิดหน้าต่างนี้ แต่ข้อผิดพลาดนี้ขัดขวางการทำงานดังกล่าว ฉันไม่แน่ใจว่าจะแก้ไขปัญหาใหม่นี้อย่างไร ฉันควรแนบรหัสของฉันหรือไม่? - person JayRoy; 25.03.2020
comment
ใช่ โปรดแสดงข้อผิดพลาดและรหัสของคุณ - person Sven; 25.03.2020
comment
ก่อนอื่น ฉันจัดการเพื่อใช้คำแนะนำของคุณเพื่อล้างข้อผิดพลาด 'display Surface Quit' แต่ตอนนี้ฉันได้รับข้อผิดพลาดอื่น ฉันใช้คำสั่ง elif เพื่อค้นหาปุ่ม Enter บนแป้นพิมพ์ เมื่อกด ฉันต้องการให้หน้าจอที่ฉันเปิดปิด แต่ให้เชลล์ทำงานต่อไปเพื่อประมวลผลการคำนวณ แต่ฉันได้รับ: pygame.error: video system not initialized ขออภัยถ้ามันยาวมาก - person JayRoy; 27.03.2020
comment
หลังจากที่คุณทำ pygame.display.quit เสร็จแล้ว คุณจะไม่สามารถรันคำสั่งใดๆ สำหรับเกมของคุณได้อีกต่อไป ดังนั้นคุณจึงต้องทำลายวงจรของเกม - person Sven; 27.03.2020
comment
นี่เป็นปัญหาของฉัน ฉันต้องการให้ GUI ปิด แต่ฉันก็ต้องการให้ SHELL เปิดอยู่เช่นกัน วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? - person JayRoy; 27.03.2020
comment
คุณช่วยคิดรหัสมาหน่อยได้ไหม - person Sven; 27.03.2020
comment
ฉันจะทำ แต่ฉันไม่สามารถระบุข้อผิดพลาดได้ ดังนั้นบล็อกโค้ดที่ฉันแนบจึงใหญ่เกินไปสำหรับแสดงความคิดเห็น หากช่วยได้ โค้ดที่ใช้กราฟิกจะอยู่ในคลาส ฟังก์ชันการเรนเดอร์ของคลาสนี้ถูกเรียกใช้ในขณะที่วนรอบนอกโค้ด ภายใน while loop นี้จะมี pygame.display.quit จากนั้นฟังก์ชันการเรนเดอร์จะตามมา ลูปจะมองหาปุ่มที่จะกด และควรจะแยกลูปและดำเนินการต่อ แต่นี่ไม่ใช่กรณี - person JayRoy; 04.04.2020
comment
ด้วย break() คุณสามารถแยกออกจากลูปได้ บางทีคุณควรลองใช้ลูปของคุณเมื่อคุณต้องการปิดหน้าต่าง - person Sven; 04.04.2020
comment
น่าเสียดายที่เซ็นเซอร์สำหรับลูปนั้นในความเป็นจริงแล้วอยู่นอกลูป มันยังคงอยู่ในฟังก์ชันการเรนเดอร์ที่เป็นส่วนหนึ่งของคลาส ดังนั้นฉันจึงไม่แน่ใจว่าควรใส่คำสั่ง break ไว้ที่ไหน - person JayRoy; 04.04.2020
comment
เพียงลองใช้คำสั่งที่เหมาะสม หากมันไม่พอดีเลย ให้ลองทำดังนี้: running = True --------- - หากรัน: pygame.update_function() ---------------- ถ้า now_leave_game: วิ่ง = เท็จ - person Sven; 04.04.2020