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.
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:
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:
Esto finalizará el programa de manera adecuada cuando el usuario lo interrumpa manualmente.