IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Problème avec deux fenêtres s'ouvrant à la suite


Sujet :

Tkinter Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut Problème avec deux fenêtres s'ouvrant à la suite
    Bonjour à tous !
    J'ai commencé python il y a peu de temps et je me lance avec un ami dans mon premier projet : un chat IRC. J'ai un problème avec l'interface : lorsque le client lance le programme, une première fenêtre lui demande de rentrer l'adresse IP du serveur sur lequel se connecter, le port ainsi que le pseudo de connexion. Un bouton permet ensuite en principe de fermer la fenêtre et d'ouvrir la fenêtre de chat. Cependant, au lieu de se fermer complètement, la fenêtre de connexion est incluse dans la seconde (voir image jointe).

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    #!/usr/bin/python3
     
    from tkinter import *
    import time
    import socket
    import decimal
     
    class Connection(Frame):
            def valider(self):
                    if (self.ip.get()=="" or self.port.get()=="" or self.pseudo.get()==""):
                            self.erreur["text"] = "Veuillez remplir tous les champs avant de valider"
                    else:
                            global adresse_ip
                            global port_connection
                            global pseudo_user
                            adresse_ip = self.ip.get()
                            port_connection = self.port.get()
                            pseudo_user = self.pseudo.get()
                            Connection.quit(self)
     
            def __init__(self,master=None):
                    Frame.__init__(self, master)
     
                    self.titre1 = Label(text="Adresse IP :")
                    self.titre1.pack(side="top")
     
                    self.ip = StringVar()# Prévoir la variable pour recevoir le texte saisi
                    ip = Entry(textvariable=self.ip, width=30)
                    ip.pack(side="top")
     
     
                    self.titre2 = Label(text="Port :")
                    self.titre2.pack(side="top")
     
                    self.port = StringVar()# Prévoir la variable pour recevoir le texte saisi
                    port = Entry(textvariable=self.port, width=30)
                    port.pack(side="top")
     
                    self.titre3 = Label(text="Pseudo :")
                    self.titre3.pack(side="top")
     
                    self.pseudo = StringVar()# Prévoir la variable pour recevoir le texte saisi
                    pseudo = Entry(textvariable=self.pseudo, width=30)
                    pseudo.pack(side="top")
     
                    self.erreur = Label(text="", fg="red")
                    self.erreur.pack(side="bottom")
     
                    self.validation=Button(text="Valider", command=self.valider)
                    self.validation.pack(side="bottom")
     
    connection = Connection()
    connection.mainloop()
    connection.destroy()
     
    class Chat(Frame):
            global adresse_ip
            global port_connection
            global pseudo_user
            def afficher(e, caca=0):
                    if (e.saisie.get()[0:2]=="/w" and e.saisie.get()!=""):
                            global pseudo_envoi_msg
                            pseudo_envoi_msg=""
                            global message_envoi
                            message_envoi=""
                            for a in range(3, len(e.saisie.get())):
                                    if (e.saisie.get()[a]==" "):
                                            break
                                    pseudo_envoi_msg=pseudo_envoi_msg + e.saisie.get()[a]
                                    message_envoi=e.saisie.get()[(len(pseudo_envoi_msg)+3):]
                    if (e.saisie.get()[0]=="/" and e.saisie.get()[0:2]!="/w"):
                            e.saisie.delete(0, END)
                            return 0
                    if (caca != 0 and e.coched.get() == 0 or e.saisie.get()==""):
                            return 0
                    if (e.saisie.get()[0:2]!="/w"):
                            e.messages.insert(END, time.strftime('[%H:%M]', time.localtime()) + "\t" + "<" + pseudo_user + "> :")
                            e.messages.tag_add("message", float(e.messages.index('end').split('.')[0]) - 3.0,  float(e.messages.index('end').split('.')[0]) - 3.0 + 0.12 + float(len(pseudo_user)/100))
                            e.messages.tag_config("message", foreground="cornflower blue")
                            e.messages.insert(END, "\t" + e.saisie.get() + "\n\n")
                    else:
                            e.messages.insert(END, time.strftime('[%H:%M]', time.localtime()) + "\t" + "à  " + "<" + pseudo_envoi_msg + "> :" + "\t" + message_envoi + "\n\n")
                            e.messages.tag_add("prives", float(e.messages.index('end').split('.')[0]) - 3.0, END)
                            e.messages.tag_config("prives", foreground="green")
                    e.messages.see(END)
                    e.saisie.delete(0, END)# Plus propre que 1000
                    print (float(e.messages.index('end').split('.')[0]) - 3.0)
                    print (float(e.messages.index('end').split('.')[0]) - 3.0 + 0.12 + float(len(pseudo_user)/100))
     
            def __init__(self, master=None):
                    Frame.__init__(self, master)
                    self.saisir = StringVar()# Prévoir la variable pour recevoir le texte saisi
                    self.saisie = Entry(textvariable=self.saisir, width=60)
                    self.saisie.bind("<Return>", self.afficher)
                    self.saisie.pack(side="bottom")
     
                    self.envoi=Button(text="Envoyer", command=self.afficher)
                    self.envoi.pack(side="bottom")
     
                    self.coched = IntVar()# Prévoir la variable pour le résultat de la checkbox
                    self.coche = Checkbutton(variable = self.coched, text="Appuyer sur Entrée pour envoyer", offvalue = 0)
                    self.coche.pack(side="bottom")
                    self.coche.invoke()# On coche automatiquement
     
                    self.scrollbar = Scrollbar()
     
                    self.messages = Text(yscrollcommand=self.scrollbar.set)
                    self.messages.pack(side=LEFT, fill=BOTH)
     
                    self.scrollbar.pack(side=RIGHT, fill=Y)
                    self.scrollbar.config(command=self.messages.yview)
     
    win = Chat()
    win.mainloop()
    Je n'ai rien retiré du code n'ayant aucune idée d'où peut venir l'erreur, ce n'est encore que le début du projet il y a donc évidemment beaucoup d'autres erreurs ou de choses incomplètes mais celle-là me pose vraiment problème . Merci !
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] problème avec deux requetes dans un même script
    Par leclone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/02/2007, 10h28
  2. [CSS] Problème avec deux div côte-à-côte
    Par Etanne dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/07/2006, 13h58
  3. Problème avec deux interfaces
    Par ikeaboy dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2006, 14h56
  4. [Javascript] Problème avec une fenêtre popup.
    Par mika0102 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/05/2005, 10h50
  5. Réponses: 22
    Dernier message: 29/01/2005, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo