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 :

Blocage sans exception


Sujet :

Tkinter Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut Blocage sans exception
    Après l'ajout de quelques lignes je rencontre un blocage brusque de mon script avec l'apparation de fenêtres du genre:

    pythonw.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru.
    ou

    Runtime Error!
    Program:C:\Python24\pythonw.exe
    This application has requested the Runtime to terminate it an unusual way.
    Please contact the application's support team for more information.

    ou simplement les 2 lignes :
    Font Times 18 bold still in cache.
    malformed bucket chain in Tcl_DeleteHashEntry

    Je ne comprends pas. Merci à tous pour vos lumières, voici le code en question :

    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
    def fen_accueil_personnalise2(self):
    	self.fen_personalisee2=Toplevel(bg='white')
    	self.fen_personalisee2.geometry('+180+50')    
    	self.fen_personalisee2.wm_title(self.joueur)
    	can1=Canvas(self.fen_personalisee2,width=450,height=450,background='white',borderwidth=-1)
    	can1.grid(row=1,column=1,padx=15)
    	can1.create_image(1,1,image =self.image_your_teacher)
    	can1.coords(ALL,200,200) 
    	can1.create_text(160, 50, text='%s,\n'%self.joueur,fill='black',font=('Times', 18, 'bold'))
    	can1.focus_set()
     
    	nom_du_repertoire="C:\Python24\invite\%s"%self.joueur
    	chdir(nom_du_repertoire)
    	try:
    		fichier=open('mots.txt','r')
    		compt=0
    		while 1:
    			ligne=fichier.readline()
    			if ligne=='':
    				fichier.close()
    				break
    			else:
    				compt+=1
     
    	except:
    		can1.create_text(180, 50, text="\n\n\n\nTu n'a appris aucun mot !",fill='black',font=('Times', 18, 'bold'))
    		return
    		nbre_de_mot_appris=compt - self.nbre_de_mots_connus
    	can1.create_text(175, 50, text="\n\n\nTu as appris %d mots."%nbre_de_mot_appris,fill='black',font=('Times', 18, 'bold'))
     
    	can1.create_text(100, 210, text="AU REVOIR",tags='au_revoir',fill='blue',font=('Times', 18, 'bold'))
    	can1.tag_bind('au_revoir','<Button-1>',self.fermer_fen_personalisee2)
     
    	self.fen_personalisee2.grab_set()	
     
    def fermer_fen_personalisee2(self,event):
    	self._tk.destroy()
    Le problème vient au moment où l'utilisateur quitte le programme en cliquant sur au revoir...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    J'ai paré mon problème en remplaçant la ligne :
    can1.tag_bind('au_revoir','<Button-1>',self.fermer_fen_personalisee2)
    par :
    can1.tag_bind('au_revoir','<Button-1>',sys.exit)
    Cependant, je ne comprends toujours pas le problème précédent. Si quelqu'un a une piste je suis toujours preneur.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut
    Tu demandes la destruction de Tk - qui contient tes widgets dont ton canvas - dans le callback d'un widget : en gros tu tentes de scier la branche sur laquelle tu es assis...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    Tout d'abord, merci pour la réponse.

    Y a t'il une différence entre
    self._tk.destroy() inséré dans une méthode comme ci-dessus
    et
    sys.exit ?
    Je comprends le fait de scier la branche mais dans les 2 cas le but est bien de
    terminer le programme. Aucune autre opération n'est à effectuer ensuite.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/07/2009, 15h05
  2. JPanel transparent (tous sans exceptions)
    Par aristeas dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/02/2009, 23h16
  3. Un blocage sans erreur
    Par Invité dans le forum Langage
    Réponses: 10
    Dernier message: 08/10/2008, 14h43
  4. interruption d'un programme java sans exception
    Par laurent.c123 dans le forum Général Java
    Réponses: 9
    Dernier message: 14/12/2007, 10h10
  5. Réponses: 3
    Dernier message: 18/08/2006, 12h11

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