Si tiene una función que ejecuta constantemente un bucle infinito en el fondo, ¿cómo responderá su GUI alguna vez? Está esperando que termine el ciclo y esto hace que la interfaz sea inútil. ¿Cómo se resuelve esto en PyQT?¿Cómo se obtiene una GUI receptiva si su código subyacente está ejecutando un bucle infinte? PyQT
Respuesta
Usar hilos.
En Qt, usan algo llamado Signals and Slots. No he utilizado Qt desde la universidad, pero hay un montón de buenos recursos aquí:
PyQt Wiki: Threading,_Signals_and_Slots
Véase también esta relacionada SO mensaje: Threading in a PyQt application: Use Qt threads or Python threads? o
Usted haría ejecuta el código que no es GUI en un QThread. Entonces su GUI seguirá siendo receptiva.
Para un tutorial sobre el roscado en QT, ver este enlace:
http://doc.trolltech.com/4.4/threads.html
La documentación para la clase de rosca de Qt (QThread) está disponible en el siguiente enlace:
http://doc.trolltech.com/4.4/qthread.html#details
Ellos ambas son referencias a la documentación de C++, pero siguen siendo valiosas incluso cuando se utiliza PyQt, especialmente cuando la documentación de PyQt no es tan robusta.
- 1. ¿Cómo organizar el código GUI (para PyQt)?
- 2. Cómo determinar si una aplicación web se está ejecutando actualmente
- 3. PyQt: ¿cómo detectar y cerrar la IU si ya se está ejecutando?
- 4. ¿Cómo verificar si un proceso se está ejecutando con Delphi?
- 5. PyQT GUI Testing
- 6. Cómo rastrear si se está ejecutando una tarea async/awaitable
- 7. ¿Cómo puedo saber si un proceso se está ejecutando?
- 8. ¿Cómo saber si se está ejecutando un temporizador?
- 9. ¿Cómo se está ejecutando el código después de una excepción?
- 10. ¿Cómo comprobar si una aplicación WPF ya se está ejecutando?
- 11. Cómo comprobar si se está ejecutando un Thread de Android
- 12. Comprobar si el proceso se está ejecutando
- 13. bucle no se está ejecutando para valores flotantes
- 14. ¿Cómo determinar si el código .NET se está ejecutando en un proceso ASP.NET?
- 15. encontrar un trabajo si se está ejecutando en Quartz1.6
- 16. Verifica programáticamente si se está ejecutando syncdb
- 17. ¿Cómo puedo probar si R se está ejecutando como Rscript?
- 18. comisión si ya se está ejecutando
- 19. Comprueba si se está ejecutando un archivo exe específico
- 20. Compruebe si un script php todavía se está ejecutando
- 21. ¿Cómo comprobar si un servicio se está ejecutando a través de un archivo por lotes e iniciarlo, si no se está ejecutando?
- 22. ¿Verifica si se está ejecutando un servicio de Windows?
- 23. ¿Cómo determinar si su aplicación se está ejecutando en el Servidor de Desarrollo de Python local?
- 24. cómo ver qué código javascript se está ejecutando actualmente?
- 25. Cómo saber si el servidor de emacs se está ejecutando
- 26. ¿CÓMO determinar si el código se está ejecutando en el contexto del manejador de señal?
- 27. Powershell: si un proceso no se está ejecutando, inícielo
- 28. ¿Continuar script si solo se está ejecutando una instancia?
- 29. ¿Cómo verificar si el servidor X se está ejecutando?
- 30. Cómo obtener el menor consumo de CPU al tener un bucle infinte en un hilo
Quería proporcionar el segundo enlace ("este documento") como el enlace original, pero decidí que juntos serían un buen comienzo para aprender QThread. Editaré la respuesta para ser más coherente –