Fermer fenêtre Tkinter

Lullaby2002 -  
quent217 Messages postés 424 Statut Membre -
Bonjour,
je ne suis pas certaine que mon code soit nécessaire pour comprendre car c'est sûrement très bête mais quand je veux fermer ma fenêtre tkinter avec "fenetre.destroy()", celle-ci se ferme mais une petite fenêtre grise avec comme titre Tk apparaît... Est-ce qu'il n'y aurait pas un moyen de l'enlever ?

Merci d'avance,

Lullaby2002

Configuration: Windows / Chrome 73.0.3683.103

1 réponse

  1. quent217 Messages postés 424 Statut Membre 348
     
    Bonjour,
    si une autre fenetre s'ouvre, c'est probablement que vous refaites
    Tk()
    après
    fenetre.destroy()
    . Je ne saurais pas vous aider davantage sans voir votre code.
    0
    1. Lullaby2002 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
       
      from Tkinter import *
      import Tkinter
      import tkMessageBox
      import sys
      from decimal import Decimal


      ###########################Les fonctions###########################################


      def compatible():

      global compatibles, incompatibles, remise, pourcentages, Resultat,E1,E2,E3,E4,E5,E6,E7,E8,E9,E, Eloadversaires,R1,R2,R3,R4,R5,R6,R7,R8,R9, Eloi ###Tout mettre en global parce que on va s'en resservir un jour ou l'autre

      Eloadversaires=[(E1.get()), (E2.get()), (E3.get()), (E4.get()), (E5.get()), (E6.get()), (E7.get()), (E8.get()), (E9.get()), ] ###Les élos à prendre en compte
      Resultat=[(R1.get()), (R2.get()), (R3.get()),(R4.get()), (R5.get()),(R6.get()), (R7.get()), (R8.get()),(R9.get()), ] ##Les résultats contre chaque joueur
      Eloi= (E.get()) ###L'élo initial du joueur
      Fermer= fenetre.destroy()



      for i in range(0,len(Eloadversaires)):
      try : ### Vérifier que ce sont bien des chiffres
      Eloi = int(Eloi)
      Eloadversaires[i]=int(Eloadversaires[i])
      Resultat[i]=float(Resultat[i])

      except :
      tkMessageBox.showwarning("Warning", "Tu dois entrer des chiffres dans chaque case. Si tu n'as pas joué contre tes derniers adversaires, rentre 0 dans les case Elo et résultat. Relance le programme !")
      sys.exit()


      if Eloi<700 or Eloi>2850 or Resultat[i]!=0 and Resultat[i]!=1 and Resultat[i]!=0.5:

      tkMessageBox.showwarning("Warning", "Tes valeurs ne sont pas plausibles. Vérifie que tu as mis des points et non des virgules")
      sys.exit()


      if (Eloi-350<=Eloadversaires[i] and Eloadversaires[i]<=Eloi+350) or (Eloadversaires[i]>int(Eloi+350)) and (Resultat[i]==1) or (Eloadversaires[i]<int(Eloi-350)) and (Resultat[i]==0): ####Les conditions pour que l'élo soit pris en compte

      compatibles.append(Eloadversaires[i])
      Eloadversaires[i]= 0

      else:
      incompatibles.append(Eloadversaires[i]) ###Ceux qui ne sont pas compatibles vont dans la liste "incompatibles"


      calcul()

      def calcul():

      global Rapport, Pourcentage, Pliste1, Perf,Elofinal

      Rapport= sum(compatibles)/len(compatibles) ######Somme elos qui sont compatibles /nombre de joueurs compatibles
      Pourcentage= Decimal(sum(Resultat)/len(compatibles))*100 ##gain contre joueur compatibles/ Nombre de joueurs compatibles
      Pourcentage= round(Pourcentage)
      Pliste1= pourcentages.index(int(Pourcentage))
      Perf=Rapport+remise[Pliste1]
      Elofinal=0

      while Eloi in nonclasses : ###Un non classé fini par 9 dans le système français

      if (len(incompatibles)>1): ###Donc nombre de parties compatibles inférieur à 8

      tkMessageBox.showwarning("Warning", "Désolé mais tu n'as pas encore assez joué pour être classé")
      sys.exit()

      else :

      Elofinal= int(round(Perf/10)*10)
      tkMessageBox.showinfo("Elo nouveau", Elofinal)
      sys.exit()

      else :

      if (len(incompatibles)>1) and (Perf >= Eloi): ###La Performance est supérieure à l'Elo initial

      Elofinal = int(round((Perf* len(compatibles) + (16 - len(compatibles))* Eloi) /16 + 100))
      tkMessageBox.showinfo("Elo nouveau", Elofinal)
      sys.exit()

      elif (len(incompatibles)<1) or (Perf<Eloi) : ###On a bien 8 parties

      if (Perf<Eloi) :
      Elofinal= int(round((16* Eloi + len(compatibles)* Perf) / (16 + len(compatibles)) +100))
      tkMessageBox.showinfo("Elo nouveau", Elofinal)
      sys.exit()


      elif (Perf>Eloi) :

      Elofinal = int(round(Perf/10)*10)
      tkMessageBox.showinfo("Elo nouveau", Elofinal)
      sys.exit()




      fenetre = Tk() ####Premier label pour avoir l'elo actuel
      fenetre.resizable(False,False)

      fenetre.title("Estimation Elo national")
      fenetre.geometry("570x475")
      Fond=Canvas(fenetre, width=600,height=600)
      Fond.place(x=0,y=-50)
      Fondimage= PhotoImage(file="echec.gif")
      ximg=300
      yimg=300
      img=Fond.create_image(ximg,yimg,image=Fondimage)
      L= Label(fenetre, text= "entrez votre Elo actuel:")
      E= Entry(fenetre)
      L.place(x=40, y=0)
      E.place(x=40, y=30)

      Lactuel= Label(fenetre, text= "Entrez l'Elo de vos adversaires : ") ###Label pour avoir les elos de 9 joueurs
      E1=Entry(fenetre)
      E2=Entry(fenetre)
      E3=Entry(fenetre)
      E4=Entry(fenetre)
      E5=Entry(fenetre)
      E6=Entry(fenetre)
      E7=Entry(fenetre)
      E8=Entry(fenetre)
      E9=Entry(fenetre)
      Lactuel.place(x=20, y=90)
      E1.place(x=40, y=110)
      E2.place(x=40, y=140)
      E3.place( x=40, y= 170)
      E4.place(x=40, y=200)
      E5.place(x=40, y=230)
      E6.place(x=40,y=260)
      E7.place(x=40, y= 290)
      E8.place(x=40,y=320)
      E9.place(x=40,y= 350)


      Lactuel= Label(fenetre, text= "Entrez votre résultat (1,0.5,0):") ####Résultat, 0,5 veut dire nulle
      R1= Entry(fenetre)
      R2= Entry(fenetre)
      R3=Entry(fenetre)
      R4=Entry(fenetre)
      R5=Entry(fenetre)
      R6=Entry(fenetre)
      R7=Entry(fenetre)
      R8=Entry(fenetre)
      R9=Entry(fenetre)
      Lactuel.place(x=200, y=90)
      R1.place(x=200, y=110)
      R2.place(x=200, y=140)
      R3.place( x=200, y= 170)
      R4.place(x=200, y=200)
      R5.place(x=200, y=230)
      R6.place(x=200,y=260)
      R7.place(x=200, y= 290)
      R8.place(x=200,y=320)
      R9.place(x=200,y= 350)

      ###########################################################Les listes importantes#####################################################################
      pourcentages=[0,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]
      remise=[0, -470, -470,-470,-470,-470,-444,-422,-401,-383,-366,-351,-336,-322,-309,-296,-284,-273,-262,-251,-240,-230,-220,-211,-202,-193,-184,-175,-166,-158,-149,-141,-133,-125,-117,-110,-102,-95,-87,-80,-72,-65,-57,-50,-43,-36,-29,-21,-14,-7,0,7,14,21,29,36,43,50,57,65,72,80,87,95,102,110,117,125,133,141,149,158,166,175,184,193,202,211,220,230,240,251,262,273,284,296,309,322,336,351,366,383,401,422,444,470,470,470,470,470,470]
      compatibles=[] ###Le nombre de parties compatibles
      incompatibles=[] ###Ecarts Elo non compatibles
      Eloadversaires=[] ###Elo des adversaires totals
      nonclasses= [799, 899, 999, 1099, 1199, 1299, 1399, 1499] ##Elo possible des non-classés(selon les catégories d'âge)

      ###########################################################Le boutton qui renvoit aux fonctions#######################################################

      B= Button(fenetre, text= "calculer", width=8, command=compatible)
      B.place(x=40, y=390)

      fenetre.mainloop()
      0
      1. quent217 Messages postés 424 Statut Membre 348 > Lullaby2002 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
         
        Pouvez-vous préciser le langage utilisé dans les balises de code (explications ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code) car sinon les indentations ne sont pas concervées.
        0