2016-03-22 3 views
0

Ich hatte ein Programm, das ich getestet habe (es war ein Spiel), aber wenn ich es lief, teleportierte meine Maus zufällig über den Bildschirm. Hier ist mein Code (Ich extrahierte den Teil, der die Ursache ist)Stoppen Sie ein Python-Programm, ohne sich abzumelden, Strg C, Alt F4, ohne Verwendung der Maus

import pygame 
    import random 

    from pygame.locals import * 
    while True: 
     global screen, white, zoom 

     zoom = 1 
     screen = pygame.display.set_mode((1024, 1024)) 
     run = True 
     clock = pygame.time.Clock() 
     pygame.mouse.set_pos(random.randint(0, 1024), random.randint(0, 1024)) 


     pygame.display.update() 

Wie kann ich diesen Code stoppen? Ich möchte den Code nicht ändern. Ich habe versucht, Strg C zu verwenden, um die Tastatur zu unterbrechen, es hat nicht funktioniert. Ich habe versucht mit Alt F4, es hat nicht funktioniert. Ich habe keinen Aufgabenmanager. Das einzige, was funktioniert hat, ist Strg Alt Entf (Abmelden), aber ich möchte das nicht jedes Mal machen, wenn ich ein Programm anhalten muss. Bitte helfen Sie. Vielen Dank!

Antwort

1

Sie sollten pygame Ereignisse erfassen und überprüfen, ob das QUIT Ereignis vorhanden ist, oder auch, wenn die K_ESCAPE gedrückt wurde, dann von Ihrem while True: zurück.

quit = False 
while True: 
    for event in pygame.event.get(): 
      if event.type == QUIT: 
       quit = True 
      elif event.type == KEYDOWN and event.key == K_ESCAPE: 
       quit = True 
    if quit is True: 
     return 
+0

Ich möchte den Code jedoch nicht ändern. Ich möchte nur einen Weg zu verlassen, wenn etwas schief geht. – mathwizard888

+0

@ mathwizard888 verwenden Try & except? – tommyip

+0

@ mathwizard888 was meinst du, du willst den Code nicht ändern? –

0

In der Spiel-App können Sie Ihre Kontrolle verlieren, wenn die Update-Phase zu kurz ist. Daher empfehle ich, dass Sie einen Thread für die Update-Phase in Ihrer Frage geschrieben und sleep Funktionsaufruf in While-Schleife verschachteln. Alle diese Ansätze helfen Ihnen, das Einfrieren der App zu verhindern.

Ohne Freezing sind Strg + C und Alt + F4 akzeptabel.

0
import sys 

und verwenden sys.exit() wo immer nötig, wenn Ihr Programm hat keinen Code nach dem Code-Block.

>>> print sys.exit.__doc__ 
exit([status]) 

Exit the interpreter by raising SystemExit(status). 
If the status is omitted or None, it defaults to zero (i.e., success). 
If the status is numeric, it will be used as the system exit status. 
If it is another kind of object, it will be printed and the system 
exit status will be one (i.e., failure). 
+0

Da sie Pygame verwenden, gibt es bereits eine vordefinierte Möglichkeit, dies zu tun, überprüfen Sie meine Antwort –

Verwandte Themen