Besoin d'aide tkinter

Fermé
pseudolong Messages postés 1 Date d'inscription vendredi 19 mai 2017 Statut Membre Dernière intervention 19 mai 2017 - Modifié le 19 mai 2017 à 00:23
BenjouilleLaFripouille Messages postés 74 Date d'inscription dimanche 1 mars 2015 Statut Membre Dernière intervention 20 mai 2017 - 20 mai 2017 à 22:04
Bonjour, moi et mes partenaires nous avons besoin d'aide pour notre isn .
Dans mon mémory j'ai intégré un chronomètre mais je n'arrive pas à le placer ou je veux pour qu'il soit visible . (voir la flèche)

Merci de bien vouloir nous aider parce que nous sommes dans une impasse et je trouve ça dommage de laisser tomber ce chronomètre.

from tkinter import *
from random import randint, shuffle
from timeit import default_timer

# ----- variables globales ---------------------------------------------------
images = [] # contient les liens aux fichiers images
cartes = [] # contient le lien vers l'image des différentes cartes
cartes_jouees = [] # contient les cartes jouées
nb_lignes, nb_colonnes = 5, 4
joueur_actuel = 0
score = [0,0]
fini = False
peut_jouer = True


# ----- Images ----------------------------------------------------------------
def charger_images():
del images[:] # vide la liste
nb_images = 21 # l'image no 0 est le dos des cartes
choixCartes = []
choixCartes.append(0)#ajouter un element a la fin de la liste
i=0
while i < nb_images-1: # tirage au sort des cartes à utiliser
x = randint(1, nb_images-1) #randomint pour le tirage aleatoire
if x not in choixCartes:
choixCartes.append(x)
i += 1
for i in range(nb_images): # importation des images
nom = 'carte-' + str(choixCartes[i]) + '.gif'
image = PhotoImage(file = nom)
images.append(image)


# ----- Melange des cartes -----------------------------------------------------
def melanger_cartes():
global nb_colonnes, nb_lignes, cartes
nb_cartes = nb_colonnes * nb_lignes
cartes=list(range(1,nb_cartes//2+1))*2
shuffle(cartes) #melange dans cartes


# ----- Retourne les deux cartes à la fin de la sélection ----------------------
def gerer_tirage():
global nb_colonnes, nb_lignes, cartes_jouees
global joueur_actuel, fini, peut_jouer
if cartes[cartes_jouees[0]-1] == cartes[cartes_jouees[1]-1]:
# enlève les cartes identiques. Le joueur actuel reste le même
canvas.delete(cartes_jouees[0])
canvas.delete(cartes_jouees[1])
score[joueur_actuel] += 1
else:
# retourne les cartes différentes. Le joueur actuel change
canvas.itemconfig(cartes_jouees[0], image = images[0])
canvas.itemconfig(cartes_jouees[1], image = images[0])

cartes_jouees = []
text1 = 'Joueur 1 : ' + str(score[0]*2)

points_joueur1.config(text = text1)

peut_jouer = True # réactive l'effet du clic de la souris
if joueur_actuel == 0: # celui qui joue est en orange
points_joueur1.config(bg = 'orange')

else:

points_joueur1.config(bg = 'white')
if score[0] + score[1] == (nb_colonnes*nb_lignes)//2:
fini=True # afficher le résultat de la partie
if score[0] > score[1]:
texte = "Facile non ?"

canvas.create_rectangle(0,0,(110*nb_colonnes)+20,(110*nb_lignes)+20,
fill='white')
canvas.create_text((55*nb_colonnes)+10,(55*nb_lignes)+10,
text=texte,font='Calibri 24',fill='black')

# ----- Retourne la carte sélectionnée -----------------------------------------
def cliquer_carte(event):
global fini, plateau, cartes_jouees, peut_jouer
if len(cartes_jouees) < 2:
carteSel = canvas.find_closest(event.x, event.y)
carteID = carteSel[0]
if fini:
fini = False
reinit()
else:
canvas.itemconfig(carteID, image = images[cartes[carteID-1]]) # montre la carte
if len(cartes_jouees) == 0:
cartes_jouees.append(carteID) # enregistre la carte jouée
elif carteID != cartes_jouees[0]: # ne pas cliquer 2x sur la même carte !
cartes_jouees.append(carteID)
if peut_jouer and len(cartes_jouees) == 2:
peut_jouer = False # désactive l'effet du clic de la souris
plateau.after(1500,gerer_tirage) # patiente 1,5 secondes avant de continuer


# ----- Change la taille du plateau de jeu -------------------------------------
def jeu5x4():
global nb_colonnes
nb_colonnes = 4
reinit()

def jeu5x6():
global nb_colonnes
nb_colonnes = 6
reinit()

def jeu5x8():
global nb_colonnes
nb_colonnes = 8
reinit()


# ----- création des menus et sous-menus ------------------------------------------
def creer_menus(fen):
top = Menu(fen)
fen.config(menu=top)

jeu = Menu(top, tearoff=False)
top.add_cascade(label='Jeu', menu=jeu)
jeu.add_command(label='Nouvelle partie', command=reinit)

submenu=Menu(jeu, tearoff=False)
jeu.add_cascade(label='Dimensions', menu=submenu)
submenu.add_command(label='5 x 4', command=jeu5x4)
submenu.add_command(label='5 x 6', command=jeu5x6)
submenu.add_command(label='5 x 8', command=jeu5x8)

jeu.add_command(label='Quitter', command=fen.destroy)


# ----- Création du canvas --------------------------------------------------------
def creer_canevas(fen, col, lig):
return Canvas(fen, width=(110*col)+10, height=(110*lig)+10, bg='white')


# ----- Modifier le canvas --------------------------------------------------------
# Redémarre une partie et change éventuellement la difficulté
def reinit():
global canvas, joueur_actuel, score, nb_lignes, nb_colonnes
joueur_actuel = 0
score =[0,0]
del cartes[:]
del cartes_jouees[:]
canvas.destroy()
canvas = creer_canevas(plateau, nb_colonnes, nb_lignes)
canvas.pack(side = TOP, padx = 5, pady = 5)
canvas.bind("<Button-1>", cliquer_carte) # permet le clic sur les cartes
melanger_cartes()
for i in range(nb_colonnes): # dessin des cartes retournées
for j in range(nb_lignes):
canvas.create_image((110*i)+60, (110*j)+60, image=images[0])
text1 = 'Joueur 1 : ' + str(score[0]*2)

points_joueur1.config(text = text1, bg = 'orange')



# ----- Programme principal ----------------------------------------------------
fenetre = Tk()
fenetre.title("Memory")
creer_menus(fenetre)
# création du canvas dont la taille dépend du nombre de cartes
plateau = Frame(fenetre)
plateau.pack()
canvas=creer_canevas(plateau, nb_colonnes, nb_lignes)
canvas.pack(side = TOP, padx = 2, pady = 2)
points_joueur1 = Label(fenetre, text = "Joueur 1 : 0",
bg="orange", font="Helvetica 16")
points_joueur1.pack(pady = 2, side = LEFT)

charger_images()
melanger_cartes()
for i in range(nb_colonnes): # dessin des cartes retournées
for j in range(nb_lignes):
canvas.create_image((110*i)+60, (110*j)+60, image = images[0])
canvas.bind("<Button-1>", cliquer_carte) # permet le clic sur les cartes

def updateTime():
now = default_timer() - start
minutes, seconds = divmod(now, 60)
hours, minutes = divmod(minutes, 60)
str_time = "%d:%02d:%02d" % (hours, minutes, seconds)
canvas.itemconfigure(text_clock, text=str_time)
fenetre.after(1000, updateTime)

start = default_timer()
text_clock = canvas.create_text(60,60)

updateTime()


fenetre.mainloop()



L'image :

1 réponse

BenjouilleLaFripouille Messages postés 74 Date d'inscription dimanche 1 mars 2015 Statut Membre Dernière intervention 20 mai 2017 24
20 mai 2017 à 22:04
Bonsoir,

Je peux essayer de vous aider mais je ne vous promets rien...
Avez-vous essayer de modifier cette ligne : text_clock = canvas.create_text(60,60) ?

BenjouilleLaFripouille
0