IIC2233 / Syllabus-2022-2

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
61 stars 61 forks source link

Ventanas no responden #402

Open Bjnazar opened 2 years ago

Bjnazar commented 2 years ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

Hola, para mi código me basé en la AF3, ayudantías pasadas y también código de los contenidos que utilizaba threading. Sin haber cambiado los threads, ahora cuando trato de pasar desde la ventana de inicio a la de espera la ventana no responde. Busqué en google y al parecer el problema es "freezing gui", pero según lo que entiendo, mi programa sí tiene distintos threads que realizan tareas, por lo que no entiendo cómo arreglarlo Feliz si pudieran ayudarme para que el programa pueda funcionar, gracias de antemano

Hernan4444 commented 2 years ago

Hola,

El freezing gui suele ocurrir cuando no hay un correcto uso de señales. Lo más probable es que un QObject está ejecutando métodos de alguna ventana en ves de emitir un señal que llame a ese método.

Por ejemplo, lo más común que he visto es tener una clase interfaz con toda las ventanas, pero esta interfaz llama a los métodos de cada ventana, por ejemplo, self.ventana_1.esconder_elementos() cuando lo correcto es tener una señal (esconder_elementos_senal) en la interfaz conectada con el método esconder_elementos de ventana_1 y luego hacer self.esconder_elementos_senal.emit() en vez de self.ventana_1.esconder_elementos().

Verifica si en tu código tiene todo correctamente conectado con señales y nos cuentas,

Saludosヾ(^-^)ノ

Bjnazar commented 2 years ago

Muchas graciaaas!!!!!! Ahí lo pude arreglar!! Ahora lamentablemente aparece otro error, que no sé si esté relacionado. Copié el código de la AF3 del main.py del servidor(para que se cierre al apretar CTRL + C), y al hacerlo no reconoce el socket, pero imprimo type(socket del servidor) y es un socket.socket El error es el siguiente: (Al hacer socket.close() del servidor)

Exception in thread Thread-1 (accept_connections_thread): Traceback (most recent call last): File "C:\Users\berni\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1016, in _bootstrap_inner self.run() File "C:\Users\berni\AppData\Local\Programs\Python\Python310\lib\threading.py", line 953, in run self._target(*self._args, self._kwargs) File "C:\Users\berni\OneDrive\Desktop\IV° Semestre 2022\programacion avanzada\Bjnazar-iic2233-2022-2\Tareas\T3\servidor\clase_servidor.py", line 43, in accept_connections_thread client_socket, address = self.socket_server.accept() # tupla donde address = IP File "C:\Users\berni\AppData\Local\Programs\Python\Python310\lib\socket.py", line 293, in accept fd, addr = self._accept() OSError: [WinError 10038] Se intentó realizar una operación en un elemento que no es un socket**

Hernan4444 commented 2 years ago

Hola,

Viendo el error me imagino que cierras el socket, pero luego el loop infinito que escuchar clientes y aceptarlo se cae porque self.socket_server fue cerrado, dejó de ser socket pero todavía le pides que haga accept()

Revisa por ese lado si se soluciona el error,

Bjnazar commented 2 years ago

Muchas gracias!!! se solucionó el error