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
|
for i in range(repet):
objet = CreaMots(i, result[0][i][1], result[0][i][0], result[1][i][1], result[1][i][0])
class CreaMots():
def __init__(self, index, mot1, type1, mot2, type2, repet = 0):
"""création d'un objet représentant un mot
Args:
index (int): place du mot dans la liste
repet (int): nombre de fois où la personne a travaillé ce mot
mot1 (string): le mot numéro 1 sans déterminant
type1 (string): chaine de caractères représentant le type du mot
mot2 (string): le mot numéro 2 sans déterminant
type2 (string): chaine de caractères représentant le type du mot
"""
self.index=index
self.repet= repet
self.mot1=mot1
self.type1=type1
self.mot2=mot2
self.type2=type2
CreaMots.liste_mots.append(self)
self.crea_ligne_objet()
def crea_ligne_objet(self):
"""permet de créer l'interface pour faire soi même des listes de vocabulaire en entrant un mot et possiblement son genre (NM, NF, NN, Autre)
"""
ligne_widget = []
langues = CreaMots.liste_mots[0]
objet = [self.index, self.mot1, self.type1, self.mot2, self.type2]
CreaMots.modif_listes.append(self)
for i in enumerate(CreaMots.Bts_pop_langue):
i[1].grid(row = 0, column = (i[0]+1)**2)
Lb_num = Label(CreaMots.Fr_analyse, bg = 'white', fg = 'black', text = str(self.index) , font = ('Impact', 15))
Lb_num.grid(row = self.index+1, column = 0, padx = 10)
ligne_widget.append(Lb_num)
vars = [StringVar(), StringVar()]
for j in range(2):
lieu = j*3 # défini une valeur permettant de bien placer les widgets lors de la 1ere et 2eme itération
#entry avec un mot
Ent_langue = Text(CreaMots.Fr_analyse, width = 30, height = 2)
Ent_langue.insert(END, objet[j*2+1])
Ent_langue.grid(row = self.index+1, pady = 5, column = lieu+1, padx = 15)
#boutons ermettant de selectionner le genre du mot
genre_langue = {'français' : ('NM', 'NF'), 'allemand' : ('NM', 'NF', 'NN')}
langue = langues[j]
choix_nature_mot = []
if langue in genre_langue:
Fr_nature_mot = Frame(CreaMots.Fr_analyse, bg='brown')
Fr_nature_mot.grid(row = self.index+1, pady = 10, column = lieu + 2, padx = 10)
for k in range(len(genre_langue[langue])):
nature_mot = Radiobutton(Fr_nature_mot, indicatoron = 0, text =genre_langue[langue][k], variable = vars[j], value = k)
nature_mot.grid(row = 0, column = k)
choix_nature_mot.append(nature_mot)
nature_mot = Radiobutton(Fr_nature_mot, indicatoron = 0, text = 'Autre', variable = vars[j], value = len(genre_langue)+1)
nature_mot.grid(row = 1, column = 0, columnspan=len(genre_langue[langue]))
choix_nature_mot.append(nature_mot)
# selectionne par defaut un bouton radion
for l in choix_nature_mot:
if objet[(j+1)*2] == l['text']:
l.select()
#sépart deux colones de langue
fleche_separ = Label(CreaMots.Fr_analyse, image=Wid.double_fleche, bd=0) #séparation entre les mots des 2 langues par une double fleche
fleche_separ.grid(row = self.index+1, pady = 10, column = 3)
#creation liste repertoriant une ligne de widget
ligne_widget.append(Ent_langue)
ligne_widget.append(choix_nature_mot)
#label equilibrant pour mettre au milieu
Lb_espace = Label(CreaMots.Fr_analyse, bg = 'brown', width=5)
Lb_espace.grid(row = self.index+1, column = 6)
ligne_widget.append(Lb_espace) |
Partager