Bonjour, je viens vous demander de l'aide car je voudrais que me programme soit en mesure de lire les éléments de plusieurs Entry et de les ajouter dans une liste pour en faire une matrice. Le problème que j'ai est que je n'arrive pas à différencier les différentes Entry que j'ai. Le projet final est d'avoir 81 Entry (pour un jeu de sudoku) et que l'utilisateur puisse entrer les nombres de sa grille dans les différentes Entry et ensuite ma matrice est lue et complétée par une autre fonction non présente ici.
Merci d'avance pour votre aide
from tkinter import *
app = Tk()
app.geometry('600x600')
app.maxsize(600,600)
app.minsize(600,600)
def ajout_grille():
sudoku = []
for x in range(9):
ligne = []
for y in range(9):
nombre = test.get()
ligne.append(nombre)
sudoku.append(ligne)
for ligne in sudoku:
print(ligne)
test1 = Entry(app)
test1.place(x=10, y=10, width=25, height=25)
test2 = Entry(app)
test2.place(x=40, y=10, width=25, height=25)
test3 = Entry(app)
test3.place(x=70, y=10, width=25, height=25)
test4 = Entry(app)
test4.place(x=100, y=10, width=25, height=25)
test5 = Entry(app)
test5.place(x=130, y=10, width=25, height=25)
bouton_ajout_grille = Button(app, height=1, width=10, text="Valider votre grille", command=ajout_grille)
bouton_ajout_grille.pack()
app.mainloop()
from tkinter import *
app = Tk()
app.geometry('600x600')
app.maxsize(600,600)
app.minsize(600,600)
def check(S):
if S.isdigit():
return True
else:
return False
reg = app.register(check)
def key_pressed(event):
if len(event.widget.get()) > 0 and event.char.isdigit():
event.widget.delete(0, END)
def key_released(event):
print(event.widget.indices, event.widget.get())
r,c = event.widget.indices
#Pour naviguer avec les touches directionnelles dans les Entrys
if event.keysym == 'Up':
ENTRYS[(max(0,r-1),c)].focus()
elif event.keysym == 'Down':
ENTRYS[(min(8,r+1),c)].focus()
elif event.keysym == 'Right':
ENTRYS[(r,min(8,c+1))].focus()
elif event.keysym == 'Left':
ENTRYS[(r,max(0,c-1))].focus()
def ajout_grille():
global ENTRYS
ENTRYS = {}
for r in range(9):
for c in range(9):
entry = Entry(frame, width=5, justify='center', validate ="key", validatecommand =(reg, '%S'))
entry.bind('<Key>', key_pressed)
entry.bind('<KeyRelease>', key_released)
entry.indices = (r,c)
entry.grid(row=r, column=c, ipady=10)
ENTRYS[(r,c)] = entry
frame = Frame(app, width=600,height=600)
frame.pack()
ajout_grille()
app.mainloop()
Comme tu pourras le constater, la matrice se trouve dans le dictionnaire ENTRYS que j'ai créé avec en clé les indices (row, column) et en valeur celle de l'entrée.
Et une partie navigation avec les touches directionnelles =)
- Edité par Anonyme 5 septembre 2022 à 21:54:12
Problème sur les Entry avec Tkinter
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.