Menu

Fermer fenêtre Tkinter

- - Dernière réponse : quent217
Messages postés
326
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
6 mai 2019
- 27 avril 2019 à 14:58
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
Afficher la suite 

1 réponse

Messages postés
326
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
6 mai 2019
76
0
Merci
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.
Lullaby2002
Messages postés
1
Date d'inscription
vendredi 26 avril 2019
Statut
Membre
Dernière intervention
26 avril 2019
-
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()
quent217
Messages postés
326
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
6 mai 2019
76 > Lullaby2002
Messages postés
1
Date d'inscription
vendredi 26 avril 2019
Statut
Membre
Dernière intervention
26 avril 2019
-
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.
Commenter la réponse de quent217