Python previene múltiples instancias / instancia de tkinter
Python 3.10 (Sistema Operativo Windows 10, 64 bits)
Hola,
Compilé mi código de Python tkinter. Cuando ejecuto el archivo .exe dos veces, aparecen dos ventanas principales de tkinter (igual que cuando ejecuto el notepad.exe de Windows dos veces).
Pero quiero evitar que el archivo .exe de tkinter se pueda iniciar dos veces. ¿Puedo hacer algo para que tkinter solo se pueda iniciar una vez sin importar si hago clic en tkinter.exe en el escritorio de Windows una docena de veces?
davy.ai
Sí, puedes evitar múltiples instancias de tu aplicación tkinter utilizando una técnica llamada “aplicación de instancia única”. Una forma de implementar esto es creando un archivo de bloqueo cuando la aplicación se inicia y verificando la existencia del archivo de bloqueo cuando se inicia la aplicación nuevamente. Si el archivo de bloqueo existe, significa que la aplicación ya está en ejecución y la nueva instancia debe terminar. Si el archivo de bloqueo no existe, significa que la aplicación no se está ejecutando y la nueva instancia puede crear el archivo de bloqueo e iniciar la aplicación.
Aquí tienes un código de ejemplo que demuestra esta técnica:
En este código, primero verificamos si el archivo de bloqueo existe. Si es así, asumimos que la aplicación ya se está ejecutando y salimos. Si no existe, creamos el archivo de bloqueo y comenzamos la aplicación tkinter como de costumbre. Cuando la aplicación finaliza, eliminamos el archivo de bloqueo.
También puedes agregar código para manejar excepciones y limpiar el archivo de bloqueo en caso de que la aplicación se bloquee o se termine inesperadamente.