Beispiel #1
0
    def __init__(self, **kwargs):
        """
            Initialise la fenêtre (vue) et les éléments de connexion(modèle), de contrôle (contrôleurs)
            À la fin de __init__, le client passe en mode événementiel, n'agit qu'en cas :
            - d'action utilisateur
            - de réception de message du serveur
        """

        # Intialisation fenêtre
        fenetre = Tk()
        fenetre.resizable(FALSE, FALSE)
        Frame.__init__(self, fenetre, width=768, height=576, **kwargs)

        # Création des widgets
        self._map_label = Label(fenetre,
                                justify=LEFT,
                                font="Courier",
                                bg="white",
                                relief=GROOVE)
        message_aide = Label(fenetre, text=afficher_aide(), justify=LEFT)
        self._message_label = Label(fenetre, justify="left")
        self._bouton_envoyer = Button(fenetre, text="Envoyer")
        self._input_client = StringVar()
        ligne_texte = Entry(fenetre, textvariable=self._input_client, width=17)

        # Pack
        self._message_label.grid(row=0,
                                 column=0,
                                 padx=10,
                                 pady=5,
                                 sticky=W + N,
                                 columnspan=2)
        self._map_label.grid(row=1, column=0, pady=10, padx=10, sticky=W + N)
        message_aide.grid(row=1, column=1, pady=10, padx=10, sticky=W + N)
        ligne_texte.grid(row=3, column=0, sticky=W + N, pady=10, padx=10)
        self._bouton_envoyer.grid(row=3,
                                  column=1,
                                  sticky=W + E + N + S,
                                  pady=10,
                                  padx=10)
        ligne_texte.focus()

        self.connexion = init_connexion_serveur()
        """Connexion avec le serveur"""
        self.id_ = None
        """Identifiant du joueur du client"""

        self._obtenir_info_connexion()
        self._listener = Listener(self)
        self._sender = Sender(self)

        # On récupère les informations de connexion

        # On démarre l'écoute du serveur
        self._listener.start()

        # Dernières assignations
        self._bouton_envoyer.config(command=self._send)
        fenetre.protocol("WM_DELETE_WINDOW", self.terminer)

        # Lancement de la fenêtre
        self.mainloop()

        # On attend la fin du Thread et on quitte lorsque la fenêtre est fermée
        self._listener.join()
        exit(0)