es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando detener pygame pero no puede debido a la interrupción.

Entonces quiero que cuando hagas clic en el botón X en la parte superior se detenga todo el proceso, pero obtengo este error “interruptor” constantemente y he intentado varias formas de detener el video, pygame o audio, y ninguno de ellos funciona. Simplemente sigue imprimiendo “interruptor” en la consola.

“`import pygame
import random
import psutil
import sys

from pygame.locals import *
from moviepy.editor import *
from pypresence import Presence
import time

pygame.init()
pygame.mixer.init()
pygame.display.set_caption('lofi hip hop radio – beats to relax/study to – v1.0')

def launch(movie):
clip = VideoFileClip(movie)
clip.preview()

def checkIfProcessRunning(processName):
'''
Comprueba si hay algún proceso en ejecución que contenga el nombre dado processName.
'''
# Itera sobre todos los procesos en ejecución
for proc in psutil.process_iter():
try:
# Comprueba si el nombre del proceso contiene la cadena de texto dada.
if processName.lower() in proc.name().lower():
return True
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
return False;

def repeat():
running = True

clip = VideoFileClip("lofivid1.mp4")
time.sleep(5)
randomNumber = random.randint(1, 2)
print(str(randomNumber))
pygame.mixer.music.load("song" + str(randomNumber) + ".wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() and running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

<pre><code>if(running):
clip.preview()
else:
pygame.quit()
exit(0)
</code></pre>

while 1:
if checkIfProcessRunning('discord'):
client_id = 'ID CLIENTE' # Coloca tu ID de cliente aquí
RPC = Presence(client_id)
RPC.connect()
print(RPC.update(state="Escuchando", details="Haciendo tareas", large_image="https://static.actu.fr/uploads/2020/04/maxresdefault-960×640.jpg", small_image="https://static.actu.fr/uploads/2020/04/maxresdefault-960×640.jpg", large_text="LofiCli", start=time.time()))
else:
pass

repeat()

<pre><code><br />Cada vez que haces clic en el botón X, se imprime esto en la consola
</code></pre>

Interrupt
“`
Y no se cierra ni cambia nada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Interrupt” se produce cuando el usuario cierra la ventana de pygame mientras el programa continúa en ejecución en segundo plano. Para manejar este evento, puedes agregar un listener de eventos para verificar el evento pygame.QUIT y establecer la variable “running” en Falso:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    

    Esto romperá el bucle while y detendrá la reproducción de video y audio. Adicionalmente, puedes agregar un bloque try-except para capturar la excepción “KeyboardInterrupt”, que se lanza cuando el usuario presiona Ctrl+C para detener el programa:

    try:
        while pygame.mixer.music.get_busy() and running:
            # aquí va el listener de eventos
    
    except KeyboardInterrupt:
        pygame.quit()
        sys.exit(0)
    

    Esto finalizará el programa de manera adecuada cuando el usuario lo interrumpa manualmente.

Comments are closed.