Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonctionne uniquement quand on coupe l'application

ou: Comprendre pourquoi ce qu'on fait n'apparait que quand on quitte

    18 septembre 2019 à 19:39:34

    Salut à tous! Longtemps que j'ai pas posté ici!

    Je suis depuis quelques jours sur un projet custom, et ce projet implique à un moment d'avoir une première fenêtre tkinter + une fenêtre tkinter à côté connecté à un irc. 

    Pour faire communiquer cette fenêtre à mon protocole réseau, je passe par des queues. ça ne marche pas (mais ça vous vous en doutiez déjà). Le problème que j'ai est particulièrement... Foireux.

    Disons que tout fonctionne comme prévu: les prints affichent bien ce que je fait, le serv reçoit bien ce que j'ai et j'envoie bien ce que je dois envoyer. Mais seulement lorsque je coupe l'appli.

    En gros: je lance l'appli, me connecte au serv, la fenêtre de chat pop, j'envoie ma merde: il ne se passe rien, le serv reçoit rien du tout. Pas de print sur la console. Je coupe l'appli et la PAF! Tout les prints sur la consoles sont mis, ainsi que le serv reçoit ce que je lui envoie. 

    Voici le code de la fonction appelée (appelée run parce qu'avant c'était un thread mais ça marchait pas non plus en thread):

    	def run(self):
    		msg = ""
    		global CHAT
    		try:
    			print('1')
    			msg = self.connexion_avec_serveur.recv(65536)
    			print("2")
    		except socket.error:
    			print("3")
    		else:
    			if (msg.decode() != "ping"):
    				print(" '{}' ".format(msg.decode()))
    				try:
    					with self.mutex:
    						self.queue_v_c.put(msg.decode())
    				except queue.Full:
    					pass
    
    			try:
    				print("Estoy here")
    				with self.mutex:
    					msg = self.queue_f_c.get()
    					print("Je get un message: ", msg)
    				self.send(msg)
    				CHAT.update()
    			except queue.Empty:
    				pass
    
    
    [...]
    			CHAT.start_chat() #s'éxécute, j'ai les prints serveur pour confirmer
    			CLIENT.run() #s'éxécute après que je quitte le prog
    
    

    Je précise que tout le reste de l'interface est entièrement fine pendant cette opération !

    Merci d'avance :p

    • Partager sur Facebook
    • Partager sur Twitter
      18 septembre 2019 à 20:04:19

      Je n'ai pas tout lu mais il manque probablement un self.connexion_avec_serveur.close() quelque part.

      -
      Edité par thelinekioubeur 18 septembre 2019 à 20:05:02

      • Partager sur Facebook
      • Partager sur Twitter
        18 septembre 2019 à 20:09:54

        Nan je le close bien quand j'ai besoin de le close, c'est juste que c'est dans une autre fonction appelée sur user input
        • Partager sur Facebook
        • Partager sur Twitter
          18 septembre 2019 à 20:27:55

          Pourquoi tu ne close pas  la fin du else ?

          -
          Edité par thelinekioubeur 18 septembre 2019 à 20:29:03

          • Partager sur Facebook
          • Partager sur Twitter
            19 septembre 2019 à 15:55:31

            Je ne saurais pas quoi mettre après, j'ai virtuellement rien de plus à faire que cette clause try/except/else
            • Partager sur Facebook
            • Partager sur Twitter

            Fonctionne uniquement quand on coupe l'application

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown