Open raibd opened 3 years ago
Hola @raibd recuerdo haber respondido una issue, en la que a alguien le pasaba lo mismo que a tí. Que al enviar una señal que activaba el show el programa se quedaba "pegado" y como tu dices había que terminar por cerrarlo. La solución que encontré que puede que te funcione es que al momento de instanciar tu ventanta_juego hagas un show y a continuación un hide. Al menos de esta forma se pudo solucionar el error que te mencioné.
Inténtalo a ver si te funciona.
Hola, lamentablemente no me funciona todavia. Además, descubrí algo que me hace menos sentido. digamos que la función que ejecuto para abrir la ventana es la siguiente:
def mostrar_ventana(self, _dict):
self.log("El juego esta empezando...")
self.ventana_juego.senal_recibir_usuario_juego.emit(_dict)
#self.ventana_juego.show()
self.sala_espera.close()
donde comenté el show() de la ventana de juego. Cuando presiono iniciar, en todas las consolas de los clientes se imprime claramente el log "el juego esta empezando...", pero si pongo un print en la función que recibe el usuario en __ventana_juego__, se esperaría que todos los clientes pasen por ese print ya que todos pasaron por el log, pero lo que ocurre es que solo dos de los clientes pasan por el print. Entonces por alguna razón la señal solo le llega a las ventanas de juego de algunos clientes, pero todos la emitieron por separado. No se me ocurre que hacer.
Hola, lamentablemente no me funciona todavia. Además, descubrí algo que me hace menos sentido. digamos que la función que ejecuto para abrir la ventana es la siguiente:
def mostrar_ventana(self, _dict): self.log("El juego esta empezando...") self.ventana_juego.senal_recibir_usuario_juego.emit(_dict) #self.ventana_juego.show() self.sala_espera.close()
donde comenté el show() de la ventana de juego. Cuando presiono iniciar, en todas las consolas de los clientes se imprime claramente el log "el juego esta empezando...", pero si pongo un print en la función que recibe el usuario en ventana_juego, se esperaría que todos los clientes pasen por ese print ya que todos pasaron por el log, pero lo que ocurre es que solo dos de los clientes pasan por el print. Entonces por alguna razón la señal solo le llega a las ventanas de juego de algunos clientes, pero todos la emitieron por separado. No se me ocurre que hacer.
No soy ayudante, pero intentaste hacerlo con señales? 😅 (Escuché que así se arreglaba)
Ohhh la verdad es que está muy raro eso, y no me suena cómo se podría resolver. Todo esto lo realizas a nivel de cliente sin pasar por el servidor? Es decir, todo esto funciona independiente del servidor?
Prerrequisitos
(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")
Duda
Al intentar mostrar la ventana de juego con
show()
, la aplicacion deja de responder y tengo que cerrar las salas de espera con un popup que me da windows. Lo raro es que antes de hacer elventana_juego.show()
estoy enviando una señal a esa misma instancia y si se esta recibiendo, pero al ejecutarse la linea con elshow()
se colapsa. Otra cosa rara es que antes si estaba funcionando perfectamente y se estaba abriendo la ventana. La ventana se creó en Designer.