Utilisation de l'indice i pour passer le terme de rang i d'une liste à une autre
Fermé
zoegaze
Messages postés
2
Date d'inscription
samedi 1 juin 2019
Statut
Membre
Dernière intervention
2 juin 2019
-
Modifié le 1 juin 2019 à 18:18
yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 - 2 juin 2019 à 18:54
yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 - 2 juin 2019 à 18:54
A voir également:
- Utilisation de l'indice i pour passer le terme de rang i d'une liste à une autre
- Liste déroulante excel - Guide
- Notice d'utilisation - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Passer de qwerty a azerty - Guide
- Bouton marche arret i o - Forum Word
2 réponses
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
Ambassadeur
1 568
1 juin 2019 à 19:52
1 juin 2019 à 19:52
bonjour, je n'ai rien compris à ce que vous vouliez obtenir, et je suis très étonné de la présence de break en ligne 130.
zoegaze
Messages postés
2
Date d'inscription
samedi 1 juin 2019
Statut
Membre
Dernière intervention
2 juin 2019
Modifié le 2 juin 2019 à 16:46
Modifié le 2 juin 2019 à 16:46
Voici le code en entier et mis à jour, le faire tourner vous aidera surement à comprendre l'objectif.
Pour ce qui est du break, si l'on ne le met pas la liste française sort en entier, mais je vous accorde que sa position est louche, où faudrait-il le mettre ?
Pour ce qui est du break, si l'on ne le met pas la liste française sort en entier, mais je vous accorde que sa position est louche, où faudrait-il le mettre ?
#FLASHCARDS ZE
#RESSOURCES :
#https://www.labri.fr/perso/schlick/DOC/python1.pdf
#http://tkinter.fdex.eu/doc/radbw.html#radiobutto
#http://tkinter.fdex.eu/doc/event.html : commandes clavier
#https://app.memrise.com/course/51903/liste-de-vocabulaire-anglais-toeic/12/
#_________________________________________________________________________________________________________________________________________________
# INITIALISATION DU PROGRAMME
#_________________________________________________________________________________________________________________________________________________
from tkinter import *
import pickle
# 4 PAIRES DE LISTES
# Paire de listes initiales, banque de vocabulaire, le mot français et sa traduction au même rang
listeinitan=['to weep for joy','the mirth','the glee','cheerful','pleasured with','satisfied with','exciting','to my delight'] #mettre tous les mots dans cette liste
listeinitfr=['pleurer de joie','la gaieté',"la joie", "l'allégresse","plein d'entrain",'content de','satisfait de','passionnant','pour mon plus grand plaisir']
# Paire de listes "J'ai su (js)" vides
liste1an=[]
liste1fr=[]
# Paire de listes "J'ai hésité (jh)" vides
liste2an=[]
liste2fr= []
# Paire de listes "Je n'ai pas su (jsp)" vides
liste3an=[]
liste3fr=[]
temporairefr = ""
temporairean = ""
#_________________________________________________________________________________________________________________________________________________
# CODE SOURCE & INTERFACES GRAPHIQUES
#_________________________________________________________________________________________________________________________________________________
# LISTE INITIALE : TOUT REVISER
ii=0 # rang
def sauvegarde_de_ii(ii):
ii=ii+1
pickle.dump(ii, open('saveii', 'wb'))
def retourner_toutreviser (event) : # cette fonction permet d'afficher le mot correspondant en anglais
print (listeinitan [ii]) # afficher le mot anglais au rang i de la liste initiale
label_vc = Label(fen, text=listeinitan[ii], font="corbel 13",fg="#ff8979", bg='white') # afficher le mot en saumon sur fond blanc
label_vc.place(x='630',y='380') # position du mot sur l'écran
#changer les mots de liste
def variablei ():
temporairefr = listeinitfr[ii] # on met le mot dans une variable pour qu'il soit enregistré afin de le changer de liste
temporairean = listeinitan[ii]
def jsi(): # commande j'ai su
variablei ()
del listeinitfr[ii] # supprimer le mot français de sa liste d'origine
del listeinitan[ii] # supprimer le mot anglais de sa liste d'origine
liste1fr.append(temporairefr) # faire apparaitre le mot (variable) dans la liste 1 fr
liste1an.append(temporairean) # faire apparaitre le mot (variable) dans la liste 1 an
def jhi (): # commande j'ai hésité
variablei ()
del listeinitfr[ii]
del listeinitan[ii]
liste2fr.append(temporairefr)
liste2an.append(temporairean)
def jspi (): # commande je n'ai pas su
variablei ()
del listeinitfr[ii]
del listeinitan[ii]
liste3fr.append(temporairefr)
liste3an.append(temporairean)
def cliquer_pour_reviser():
bouton_reviser.destroy() #pour que le bouton se supprime et laisse place aux flashcards
label.place_forget() #pour que le texte se supprime et laisse place aux flashcards, ça masque le label
for ii in range (0,(len(listeinitfr))): #Tant que l'indice du mot dans la liste est inferieur au nombre de termes de cette dernière
# afficher la carte en français
print (listeinitfr [ii]) #Afficher le terme de rang i
label_voc = Label(fen, text=listeinitfr[ii], font="corbel 13",fg="#ff8979", bg='white') #Afficher le mot
label_voc.place(x='630',y='380') #Position du mot
fen.bind("<space>", retourner_toutreviser) #associer l'evenement clavier à la fonction retourner_toutréviser() ci-dessus
canvas.create_rectangle(475,300,875,500, fill='white') # rectangle de la flashcard (dimensions, couleur)
#radiobutton sous rectangle
#v = StringVar()
#button1= Checkbutton(fen, text="J'ai su", variable=v, value=1, command = jsi)
#button1.place(x='475',y='525')
#button2= Checkbutton (fen, text="J'ai hésité", variable=v, value=1, command = jhi)
#button2.place(x='625',y='525')
#button3= Checkbutton (fen, text="Je n'ai pas su", variable=v, value=1, command = jspi)
#button3.place(x='780',y='525')
v=IntVar() # Variable de contrôle, mémorise un entier, sa valeur par défaut est 0
#Un groupe de boutons radio, radiobuttons, partage une variable de contrôle qui peut être utilisée pour connaître le bouton qui est
#actuellement coché. Quand l’utilisateur clique sur l’un des boutons d’un groupe, le mécanisme qui assure qu’un seul des boutons est
#coché à un moment donné s’appuie sur cette variable de contrôle partagée.
radiobutton1 = Radiobutton (fen, text="J'ai su", variable=v, value=1, command = jsi).place(x='475',y='525')
radiobutton2 = Radiobutton (fen, text="J'ai hésité", variable=v, value=2, command = jhi).place(x='625',y='525')
radiobutton3 = Radiobutton (fen, text="Je n'ai pas su", variable=v, value=3, command = jspi).place(x='780',y='525')
sauvegarde_de_ii (ii)
break
#_________________________________________________________________________________________________________________________________________________
# LISTE 1 : J'AI SU
i1=0 # rang
def sauvegarde_de_i1(i1):
i1=i1+1
pickle.dump(i1, open('savei1', 'wb'))
def retourner_jaisu () : # Cette fonction permet d'afficher le mot correspondant en anglais
print (liste1an [i1])
label_vc = Label(fen, text=liste1an[i1], font="corbel 13",fg="#ff8979", bg='white')
label_vc.place(x='630',y='380')
#changer les mots de liste
def variable1():
temporairefr = liste1fr[i1] # on met le mot dans une variable
temporairean = liste1an[i1]
def js1 (): #commande j'ai su
variable1()
del liste1fr[i1]
del liste1an[i1]
liste1fr.append(temporairefr)
liste1an.append(temporairean)
def jh1 (): #commande j'ai hésité
variable1()
del liste1fr[i1]
del liste1an[i1]
liste2fr.append(temporairefr)
liste2an.append(temporairean)
def jsp1 (): #commande je n'ai pas su
variable1()
del liste1fr[i1]
del liste1an[i1]
liste3fr.append(temporairefr)
liste3an.append(temporairean)
def cliquer_pour_reviser_js():
# bouton_reviser.destroy() #pour que le bouton se supprime et laisse place aux flashcards
#label.place_forget() #pour que le texte se supprime et laisse place aux flashcards, ça masque le label
while i1 <= (len(liste1fr)):
# afficher la carte en français
print (liste1fr [i1])
label_voc = Label(fen, text=liste1fr[i1], font="corbel 13",fg="#ff8979", bg='white')
label_voc.place(x='630',y='380')
#associer l'evenement clavier à l'appel de la fonction et changer le rang pour passer à la carte suivante
fen.bind("<space>", retourner_jaisu)
#rectangle de la flashcard
canvas.create_rectangle(475,300,875,500, fill='white')
#radiobutton sous rectangle
v=IntVar()
radiobutton1=Radiobutton (fen, text="J'ai su", variable=v, value=1, command= js1).place(x='475',y='525')
radiobutton2 = Radiobutton (fen, text="J'ai hésité", variable=v, value=2, command =jh1).place(x='625',y='525')
radiobutton3 = Radiobutton (fen, text="Je n'ai pas su", variable=v, value=3, command = jsp1).place(x='780',y='525')
sauvegarde_de_i1 (i1)
break
#_________________________________________________________________________________________________________________________________________________
# LISTE 2 J'AI HESITE
i2=0 # rang
def sauvegarde_de_i2(i2):
i2=i2+1
pickle.dump(i1, open('savei2', 'wb'))
# Cette fonction permet d'afficher le mot correspondant en anglais
def retourner_jh () :
print (liste2an [i2])
label_vc = Label(fen, text=liste2an[i2], font="corbel 13",fg="#ff8979", bg='white')
label_vc.place(x='630',y='380')
#changer les mots de liste
def variable2():
temporairefr = liste2fr[i2] # on met le mot dans une variable
temporairean = liste2an[i2]
def jh2 ():
variable2()
del liste2fr[i2]
del liste2an[i2]
liste2fr.append(temporairefr)
liste2an.append(temporairean)
def js2 (): #commande j'ai su
variable2()
del liste2fr[i2]
del liste2an[i2]
liste1fr.append(temporairefr)
liste1an.append(temporairean)
def jsp2 (): #commande je n'ai pas su
variable2()
del liste2fr[i2]
del liste2an[i2]
liste3fr.append(temporairefr)
liste3an.append(temporairean)
def cliquer_pour_reviser_jh():
# bouton_reviser.destroy() #pour que le bouton se supprime et laisse place aux flashcards
#label.place_forget() #pour que le texte se supprime et laisse place aux flashcards, ça masque le label
while i2 <= (len(liste2fr)):
# afficher la carte en français
print (liste2fr [i2])
label_voc = Label(fen, text=liste2fr[i2], font="corbel 13",fg="#ff8979", bg='white')
label_voc.place(x='630',y='380')
#associer l'evenement clavier à l'appel de la fonction et changer le rang pour passer à la carte suivante
fen.bind("<space>", retourner_jh)
#rectangle de la flashcard
canvas.create_rectangle(475,300,875,500, fill='white')
#radiobutton sous rectangle
v=IntVar()
radiobutton1=Radiobutton (fen, text="J'ai su", variable=v, value=1, command= js2).place(x='475',y='525')
radiobutton2 = Radiobutton (fen, text="J'ai hésité", variable=v, value=2, command = jh2).place(x='625',y='525')
radiobutton3 = Radiobutton (fen, text="Je n'ai pas su", variable=v, value=3, command = jsp2).place(x='780',y='525')
sauvegarde_de_i2 (i2)
#_________________________________________________________________________________________________________________________________________________
#JE N'AI PAS SU
i3=0 # rang
def sauvegarde_de_i1(i1):
i3=i3+1
pickle.dump(i3, open('savei3', 'wb'))
#changer les mots de liste
def variable3():
temporairefr = liste3fr[i3] # on met le mot dans une variable
temporairean = liste3an[i3]
def retourner_jsp():
print (liste3fr [i3])
bouton_reviser.destroy() #pour que le bouton se supprime et laisse place aux flashcards
label.place_forget() #pour que le texte se supprime et laisse place aux flashcards, ça masque le label
def jsp3 (): #commande je n'ai pas su
variable3()
del liste3fr[i3]
del liste3an[i3]
liste3fr.append(temporairefr)
liste3an.append(temporairean)
def js3(): #commande j'ai su
variable3()
del liste3fr[i3]
del liste3an[i3]
liste1fr.append(temporairefr)
liste1an.append(temporairean)
def jh3 (): #commande j'ai hésité
variable3()
del liste3fr[i3]
del liste3an[i3]
liste2fr.append(temporairefr)
liste2an.append(temporairean)
def cliquer_pour_reviser_jsp():
# bouton_reviser.destroy() #pour que le bouton se supprime et laisse place aux flashcards
#label.place_forget() #pour que le texte se supprime et laisse place aux flashcards, ça masque le label
while i3 <= (len(liste3fr)): #Tant que l'indice du mot dans la liste est inferieur au nombre de termes de cette dernière
# afficher la carte en français
print (liste3fr [i3]) #Afficher le terme de rang i
label_voc = Label(fen, text=liste3fr[i3], font="corbel 13",fg="#ff8979", bg='white') #Afficher le mot
label_voc.place(x='630',y='380') #Position du mot
fen.bind("<space>", retourner_jsp()) #associer l'evenement clavier à l'appel de la fonction et changer le rang pour passer à la carte suivante
#rectangle de la flashcard
canvas.create_rectangle(475,300,875,500, fill='white')
#radiobutton sous rectangle
v=IntVar()
radiobutton1=Radiobutton (fen, text="J'ai su", variable=v, value=1, command=js3).place(x='475',y='525')
radiobutton2 = Radiobutton (fen, text="J'ai hésité", variable=v, value=2, command =jh3).place(x='625',y='525')
radiobutton3 = Radiobutton (fen, text="Je n'ai pas su", variable=v, value=3, command =jsp3).place(x='780',y='525')
sauvegarde_de_i3 (i3)
#_________________________________________________________________________________________________________________________________________________
# BASE DE L'INTERFACE GRAPHIQUE TKINTER
#_________________________________________________________________________________________________________________________________________________
fen = Tk() # création de la fenêtre principale
fen.title("ZE flashcards") #nom du logiciel
fen.attributes ('-fullscreen', 1) #ouverture de la fenêtre en plein écran
#Creation du canva contenant le titre (le titre est une photo d'un titre travaillé sur Paint)
canvas = Canvas(fen, width="1366", height="768", background="#e6e6e6")
photo = PhotoImage(file ='titre.gif')
item = canvas.create_image(650, 50, image = photo)
photo_fermer = PhotoImage(file='croix.gif')
bouton_quitter = Button(fen,image=photo_fermer, relief= "flat", overrelief="flat",command=fen.destroy) #bouton quitter
bouton_quitter.place(x="1310",y="0")#affichage bouton quitter
cadre = Frame(fen, borderwidth=0) #cadre pour mettre le menu principal
#menu principal: boutons contenu dans un Frame
bouton1 = Button(cadre, text="J'ai su", width=49, font="Arimo", fg="#ffffff", background="#a6a6a6", relief= "flat", overrelief="flat", cursor="star", borderwidth=8, command=cliquer_pour_reviser_js) #fg=couleur du texte
bouton1.grid(row=0, column=0)
bouton2 = Button(cadre, text="J'ai hésité", width=48, font="Arimo", fg="#ffffff", background="#a6a6a6", relief= "flat", overrelief="flat", cursor="exchange", borderwidth=8, command=cliquer_pour_reviser_jh)
bouton2.grid(row=0, column=1)
bouton3 = Button(cadre, text="Je n'ai pas su", width=48, font="Arimo", fg="#ffffff", background="#a6a6a6", relief= "flat", overrelief="flat", cursor="pirate", borderwidth=8, command=cliquer_pour_reviser_jsp)
bouton3.grid(row=0, column=2)
#explcations du logiciel grâce à un Label
texte = "Bonjour et bienvenue sur ZE FLASCARDS !\n\n Ce logiciel vous aidera à apprendre de nombreux mots de vocabulaire en anglais !\n Pour vos révisions, un mot en français sera affiché sur une flashcard, en appuyant sur la touche « espace » de votre clavier, vous retournerez la carte afin d’afficher la traduction du mot en anglais. \n\n A vous désormais d’indiquer à l’aide des trois boutons disposés sous la carte, si vous avez parfaitement su le mot, si vous avez hésité ou bien si vous ne le connaissiez pas du tout. \nCela vous permettra par la suite de réviser uniquement les mots sur lesquels vous avez hésité, ou bien ceux que vous ignoriez mais aussi ceux que vous connaissiez déjà pour ne pas les oublier.\n\n Bon apprentissage !"
label = Label(fen, text=texte, wraplength = 800, justify = LEFT, font="corbel 13", bg="#e6e6e6")
label.place(x='275',y='250')
#lien pour aller réviser à partir d'un bouton
bouton_reviser = Button (fen,text="Je vais réviser :)",font="candara 14 bold",fg="#ff8979",overrelief="flat", background="#e6e6e6", relief="flat", cursor="hand2", command= cliquer_pour_reviser)
bouton_reviser.place(x='650',y='550')
cadre.place(x='0',y='100') #afficher dans la fenêtre le petit menu
canvas.pack() #afficher dans la fenêtre le canvas
fen.mainloop()
_Ritchi_
Messages postés
21311
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
25 janvier 2025
6 089
Modifié le 2 juin 2019 à 17:02
Modifié le 2 juin 2019 à 17:02
Bonjour,
C'est gentil de copier tout ton code mais en le faisant sans respecter le process, il est incompréhensible car ton copié/collé a fait disparaitre toutes les indentations qui sont les piliers du Python
Il faut suivre ceci pour que ton code soit lisible/compréhensible:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ritchi
C'est gentil de copier tout ton code mais en le faisant sans respecter le process, il est incompréhensible car ton copié/collé a fait disparaitre toutes les indentations qui sont les piliers du Python
Il faut suivre ceci pour que ton code soit lisible/compréhensible:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ritchi
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
2 juin 2019 à 18:54
2 juin 2019 à 18:54
pourquoi faire un boucle et en sortir au premier tour?
dans quel cas voulez-vous arrêter la boucle?
dans quel cas voulez-vous arrêter la boucle?