2010-01-08 15 views
10

पर लटकने वाले पायगैम प्रोग्राम अभी मैं पिगमेम के साथ चारों ओर घूम रहा हूं, और ऐसा लगता है कि जब मैं उन्हें बंद करने की कोशिश करता हूं तो मैं उन सभी छोटे कार्यक्रमों को लटकता हूं जो मैं इसे लटकता हूं।निकास

उदाहरण के लिए, निम्नलिखित कोड डालें:

from pygame.locals import * 
pygame.init() 
# YEEAAH! 
tile_file = "blue_tile.bmp" 
SCREEN_SIZE = (640, 480) 
SCREEN_DEPTH = 32 

if __name__ == "__main__": 
    screen = pygame.display.set_mode(SCREEN_SIZE, 0, SCREEN_DEPTH) 
    while True: 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       break 

    tile = pygame.image.load(tile_file).convert() 
    colorkey = tile.get_at((0,0)) 
    tile.set_colorkey(colorkey, RLEACCEL) 

    y = SCREEN_SIZE[1]/2 
    x = SCREEN_SIZE[0]/2 

    for _ in xrange(50): 
     screen.blit(tile, (x,y)) 
     x -= 7 
     y -= 14 

मैं कुछ भी कोड के साथ गलत नहीं देखते हैं, यह काम करता है (तथ्य यह है कि टाइल सही स्थानों में Blit नहीं है पर ध्यान न दें), लेकिन कोई ट्रेसबैक नहीं है और इसे बंद करने का एकमात्र तरीका टास्क मैनेजर में पायथन प्रक्रिया को मारना है। क्या कोई मेरे कोड के साथ कोई समस्या खोज सकता है?

उत्तर

13

यदि आप इसे आईडीईएल से चला रहे हैं, तो आप pygame.quit() खो रहे हैं।

यह आईडीईई पायथन दुभाषिया के कारण होता है, जो किसी भी तरह के संदर्भों को संदर्भित करता है। सुनिश्चित करें, आप अपने आवेदन या खेल से बाहर निकलने पर pygame.quit() का आह्वान करते हैं।

देखें: In IDLE why does the Pygame window not close correctly?

और यह भी: Pygame Documentation - pygame.quit()

+0

+1 अनुमान लगा कि यह एक निष्क्रिय समस्या है के लिए। –

+0

PyScripter के लिए वही है। आपका बहुत बहुत धन्यवाद! – Altaisoft

12

कहाँ बाहरी पाश चले जाते हैं?

while True: # outer loop 
    for event in pygame.event.get(): # inner loop 
     if event.type == QUIT: 
      break # <- break inner loop 
+1

हाँ, कार्यक्रम की संरचना टूटी हुई लगती है। मुझे आश्चर्य है कि इस तरह का एक कार्यक्रम किसी भी आउटपुट का उत्पादन करेगा। वास्तव में, मुझे संदेह है कि यह ओपी का वास्तविक कोड है। – Kylotan

0

मैं जानने पर भी ऐसी ही समस्या थी कि मैं क्यों नहीं कर सकते पास pygame खिड़कियों .. और खोजा गया .. और इस में आए ..

मैं इस सब कुछ बताते हैं लगता है .. और अच्छा विचार भी। ।

के रूप में देखी गई: http://bytes.com/topic/python/answers/802028-pygame-window-not-closing-tut-not-helping

मुझे लगता है कि मुद्दा यह है कि आप रहे निष्क्रिय भीतर से यह चल रहा है। यह जैसा कि pyGame के ईवेंट लूप और टिंकर के ईवेंट लूप एक दूसरे के साथ हस्तक्षेप करता है। यदि आप कमांड लाइन से स्क्रिप्ट चलाते हैं, तो यह काम करता है।

3

मैं एक ही समस्या थी, लेकिन निम्न कार्य करके इसे हल:

try: 
    while True: 
     for event in pygame.event.get(): 
     if event.type==QUIT or pygame.key.get_pressed()[K_ESCAPE]: 
      pygame.quit() 
      break 
finally: 
    pygame.quit() 
3

'अगर event.type == QUIT' में सिंटेक्स त्रुटि उत्पन्न करता है। == pygame.QUIT होना चाहिए, इसके अलावा, शेष पंक्ति गलत है लेकिन मैं नहीं देख सकता कि कैसे। वहाँ एक क्लीनर संस्करण here है:

running = True 
    while running: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
      running = False 
    pygame.quit() 
+0

'pygame.locals आयात * से' के साथ, ओपी के पास वैश्विक नामस्थान में 'QUIT' है इसलिए कोई वाक्यविन्यास त्रुटि नहीं है। – bstpierre

संबंधित मुद्दे