Fermer fenêtre Tkinter
Lullaby2002
-
quent217 Messages postés 424 Statut Membre -
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
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
-
Bonjour,
si une autre fenetre s'ouvre, c'est probablement que vous refaitesTk()
aprèsfenetre.destroy()
. Je ne saurais pas vous aider davantage sans voir votre code.-
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()- 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.
-