I just spent a fair amount of time finding a 64-bit installation of pygame to use with python 3.3, (here) and now am trying to make a window. However, although the window opens up fine it does not close when it hit the x button. In fact, I have to close IDLE to close the window. I am running a 64 bit version of Win 7. Here is my code:
import pygame
import time
(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.flip()
pygame.display.set_caption("Hello World")
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
When I append
time.sleep(5)
pygame.quit()
It still doesn't close. My only guess would be that pygame.quit might go inside one of the loops, but even if that were resolved I would greatly prefer being able to close the window when I want to.
Not sure but try this Because you code runs fine on my system after I add
pygame.quit()
at the endIts perhaps because as Idle is made on Tkinter and thus Tkinter and Pygame main loop do not have a mutual understanding.
Your code will run very well on command prompt though.
try using the following command:
sys.exit(0)
notice: You will need to import the sys library in order to use it.
To answer the original question: You must call
pygame.quit()
after breaking the main loop. One elegant solution goes as follows:Most pygame tutorials seem to suggest exiting by calling
pygame.quit()
and thensys.exit()
. I have personally run into problems (was on a unix system though) where this still did not close the window properly. The solution was to addpygame.display.quit()
specifically beforepygame.quit()
. That should not be necessary as far as I can tell, and I'm afraid I don't know why that solved the issue but it did.if wanna make pygame close when window button x press put the code like this
why put exit() after pygame.quit() cause pygame.quit() make system exit and exit() for close that window
The IDE interferes with how pygame runs the code. Try to run it from the commandline or the terminal. The problem should disappear.