Cómo combinar threads con interfaces gráficas en PyQt6: del Thread clásico al QThread, sus señales propias y dónde conectarlas.
Una diferencia a tener presente: QThread no tiene is_alive(). El equivalente es isRunning(). En general, casi todo método de Thread tiene su equivalente en QThread (se encuentran en la documentación de la clase).
def ejecutar_thread(self) -> None: # Ojo: isRunning() en lugar de is_alive() if self.thread is None or not self.thread.isRunning(): self.thread = MiThread(self.senal_thread) self.thread.start()Definir la señal dentro del QThread mantiene el código más encapsulado: el thread es dueño de su propia señal y la ventana solo decide a qué método conectarla.
Regla práctica: conecta toda señal en el hilo principal (Main). Evita que un thread secundario haga las conexiones, porque solo serán visibles dentro de su propio dominio.