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 :

Impossible d'ouvrir un fichier en double cliquant dessus


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Impossible d'ouvrir un fichier en double cliquant dessus
    Bonjour,

    je viens de créer un client pour un chat en python et
    quand je tente d'ouvrir le fichier python en double cliquant dessus rien de se passe.
    mais quand je passe par F5 il marche correctement.
    auriez-vous une réponse.

    Cordialement,
    Dbutant

    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
     
    from tkinter import *
    import socket, sys, threading 
     
    host = '127.0.0.1'
    port = 50000
     
    class ThreadReception(threading.Thread):
        """objet thread gérant la réception des messages"""
        def __init__(self, conn, widget= None):
            threading.Thread.__init__(self)
            self.connexion = conn           # réf. du socket de connexion
            self.widget = widget
     
        def run(self):
            while 1:
                message_recu = self.connexion.recv(1024)
                message_recu = str(message_recu,'LATIN1')+'\n'
                self.widget.insert(0.0,message_recu)
                if message_recu =='' or message_recu.upper() == "FIN":
                    break
                # Le thread <réception> se termine ici.
                # On force la fermeture du thread <émission> :
            self.widget.insert(0.0,"Client arrêté. Connexion interrompue.")
            self.connexion.close()
     
     
    class interface_client(Tk):
     
        def __init__(self):
            # création de la fenetre principale 
            self.root = Tk()
     
            self.frame = Frame(self.root, bg = 'grey')
     
            self.text1 = Text(self.frame,height = 10 ,width = 75)  #affichage
            self.scrollbar=Scrollbar(self.frame)
            self.text1.configure(yscrollcommand=(self.scrollbar, 'set'))
            self.scrollbar.configure(command=(self.text1, 'yview'))
     
            self.text2 = Entry(self.frame)  #ecriture
     
            self.nombre_de_connectes = Label(self.frame,height=1,width = 2,text= '0')    
     
            self.frame.pack()
            self.text1.grid()
            self.scrollbar.grid(row= 0, column= 1,sticky= N+S)
            self.text2.grid(row =1, sticky= E+W)
            self.nombre_de_connectes.grid(row= 1, column= 1)
     
            bouton= Button(self.frame, text = 'envoie', fg='red', command = self.envoi)
            bouton.grid(row= 2)
     
            #  evenement
            self.text2.bind('<Return>',self.envoi)
     
            # Programme principal - Établissement de la connexion :
            self.connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            try:
                self.connexion.connect((host, port))
            except socket.error:
                print ("La connexion a échoué.")
                sys.exit()    
            print ("Connexion établie avec le serveur.")
     
            #methode associée
            self.recoi()# Programme principal - Établissement de la reception :
            self.root.mainloop()
     
     
     
        def recoi(self):   
            # Dialogue avec le serveur : on lance le thread pour gérer
            # indépendamment la réception des messages :
            th_R = ThreadReception(self.connexion, self.text1)
            th_R.start()
     
     
        def envoi(self,evt= 1):
            self.evt = evt
            a= self.text2.get()+'\n'
            b= self.text2.get()
            b= bytes(b,'LATIN1')
            self.connexion.send(b)
            self.text1.insert(0.0,a)
            self.text2.delete(0,END)
     
     
    app= interface_client()

  2. #2
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Peut être que les caractères accentués dans ton code source pose problème

    ajoute cette ligne tout en haut de ton code


  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci,

    Mais j'ai déjà cette ligne d'écrite.
    en faite, qaund je le lance, il n'y a que la fenetre tk qui apparait.
    les frames et autres objets ne s'affichent pas et tout se fige.

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Je vous ai fait parvenir via pièce jointe les "imprime écran" de ce que j'ai.

    Si quelqu'un à une solution de contournement ou une explication sur ce comportement je suis preneur.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  5. #5
    Membre habitué Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Points : 137
    Points
    137
    Par défaut
    bonjour Dbutant,

    j'ai tester ton bout de code qui doit être partiel je suppose. Il ne me semble pas appropié de mélanger des pack et des grid dans le placement de tes widgets dans ton interface.
    Sous l'IDE eric, l'inteface s'est lancée correctement.
    J'ai mis la ligne d'entete : # -*- coding:Latin-1 -*- plutot que # -*- coding:Utf-8 -*-, mais ce ne doit pas être déterminant.

    La question que je me pose est : n'aurais-tu pas des arguments de lancement de ligne de commande qui seraient paramétrés sous ton IDE est peut-être oubliés en lancement "manuel" ?

  6. #6
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Citation Envoyé par bringer Voir le message
    bonjour Dbutant,

    j'ai tester ton bout de code qui doit être partiel je suppose. Il ne me semble pas appropié de mélanger des pack et des grid dans le placement de tes widgets dans ton interface.
    Sous l'IDE eric, l'inteface s'est lancée correctement.
    J'ai mis la ligne d'entete : # -*- coding:Latin-1 -*- plutot que # -*- coding:Utf-8 -*-, mais ce ne doit pas être déterminant.

    La question que je me pose est : n'aurais-tu pas des arguments de lancement de ligne de commande qui seraient paramétrés sous ton IDE est peut-être oubliés en lancement "manuel" ?
    En effet, les pack et les grid ne devraient pas être utilisés ensemble. Essaie en mettant que grid et en précisant bien ligne/colonne. Donne le code complet et/ou les arguments de ton script.

  7. #7
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Différentes méthodes de placement peuvent être utilisées, ça ne pose pas de problème tant que la même méthode est utilisée au sein d'un même widget container (comme les frame par ex).

    Par ex, on peut très bien packer les widgets contenu par root (dont une Frame), et grider tous les widgets contenus dans la Frame.

Discussions similaires

  1. Impossible d'ouvrir un .dpr en double-cliquant dessus
    Par prolifik dans le forum Débuter
    Réponses: 4
    Dernier message: 09/06/2009, 01h14
  2. Réponses: 2
    Dernier message: 26/09/2008, 14h37
  3. Réponses: 2
    Dernier message: 07/08/2008, 21h19
  4. impossible d'ouvrir le fichier
    Par michel71 dans le forum Langage
    Réponses: 8
    Dernier message: 05/05/2006, 11h20
  5. IE : impossible d'ouvrir un fichier
    Par alexixlebaulois dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 23/12/2005, 11h08

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