Closed lewebe closed 4 years ago
Hola!
Si al enviar la carta quieres inmediatamente mandar un QPixmap
desde el servidor, tendrías que reacomodar tu servidor como si fuera una aplicación de pyQt5 (similar a como hacemos todo el setup para una interfaz gráfica, solo que nunca le armas ventanas ni le aplicas show a nada, puesto que no tiene ventanas). Sino, te lanzará ese error ya que el programa te pide que corras una QApplication
primero antes de instanciar Pixmaps, labels u otros widgets de pyqt5 :(
Por ende, tus dos opciones serían:
main.py
del cliente).Espero se haya entendido!
Hola @gatochico! Estaba pensando enviarla como un QPixmap
porque pensé que era la única forma de hacerlo... A qué te refieres con "simplemente enviar la imagen desde el server"? Abrir la imagen como un archivo y leer los bytes? Gracias de antemano gato chico
Exacto! Para enviar la imagen, tendrias que abrirla, leer sus bytes, enviar los bytes al cliente (con el protocolo pedido y todo). Luego tu cliente recibe los bytes y cuando ya recibió, decodifico todo y lo unió, tendrás un bytearray con la información de la foto en bytes.
Luego, teniendo este byteArray, puedes ir y cargarlo en un pixmap sin la necesidad de almacenarlo en un archivo en el cliente (pista: Investiga sobre el método loadFromData que tienen los pixmaps :speak_no_evil: .
Salu3
Perfecto! Última cosa uwu. Ahora estoy intentando abrir el archivo de la siguiente manera:
with open(path_sprite_carta_reverso, 'rb') as archivo:
carta = json.dump(archivo.read(),archivo)
Pero me tira el error TypeError: Object of type bytes is not JSON serializable
. Si no hago el json.dump() y lo mando así nomas , no lo estaría usando en ninguna parte de mi tarea (ya que el resto de información que mando está en strings y solo necesito utilizar .encode()
. Estaría bien eso?
Para ese caso que indicas, no se debería usar json.dump, ya que dump se usa para transformar un objeto serializable a string. Ahí lo que tu quieres es abrir el archivo y sacar sus bytes, cosa que ya haces al abrirlo en 'rb'.
Ahora sobre si debes usar json dump/s en alguna parte de tu programa: Esto en realidad depende de tu propio programa, y principalmente, tu protocolo en envío de informacion entre sockets en general. Te recomiendo que leas la materia de serialización donde se abordan esas funciones, veas si los casos en que se usan aplican a tu tarea. Si consideras que no aplican y no hay casos donde deberías usar dump/s... entonces no fuerzes el usarlo.
Saludos!
Perfecto, gracias @gatochico ! Sigo siendo tu fans
Hola, estoy tratando de enviar la imagen de una carta desde el servidor de la siguiente forma:
Pero al correrlo me da el error
QPixmap: Must construct a QGuiApplication before a QPixmap
. A qué se puede deber?