Fermer fenêtre Tkinter

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. 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. 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