Probleme tkinter avec les grid et pack

Fermé
balkis3005 Messages postés 9 Date d'inscription dimanche 13 mars 2022 Statut Membre Dernière intervention 1 avril 2022 - Modifié le 18 mars 2022 à 17:44
mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 - 18 mars 2022 à 17:49
Bonjour,

J'ai un problème pour positionner des widgets
tk.Entry
: j'utilise la méthode
grid()
, mais lorsque j'essaie de lancer le programme je reçois cette erreur :

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files (x86)\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/Users/jocez/PycharmProjects/pythonProject1/password_generator.py", line 89, in <lambda>
menu_tableau = Button(frame3, text='Stockage', font=('Helvetica', 25), bg='#4065A4', fg='white', justify=LEFT, command = lambda :stock_page())
File "C:/Users/jocez/PycharmProjects/pythonProject1/password_generator.py", line 42, in stock_page
frame_tableau1.grid(row=2, column=1)
File "C:\Program Files (x86)\Python38-32\lib\tkinter\__init__.py", line 2484, in grid_configure
self.tk.call(
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack


Voilà le programme défaillant :
# creation frames
frame_tableau1 = Frame(window, bg='#4065A4')
frame_tableau2 = Frame(window, bg='#4065A4')

# creation tableau
for x in range(8) :
    cell = Entry(frame_tableau1, font=('Helvetica'), bg='black', fg='white')
    cell.grid(row=1, column=1)
for x in range(8) :
    cell = Entry(frame_tableau2, font=('Helvetica'), bg='black', fg='white')
    cell.grid(row=1, column=1)


... et les fonctions que j'utilise :
def generation_page() :
    frame.pack()
    frame2.pack()
    right_frame.pack()
    frame_tableau1.grid_forget()
    frame_tableau2.grid_forget()

def stock_page() :
    frame.pack_forget()
    frame2.pack_forget()
    right_frame.pack_forget()
    frame_tableau1.grid(row=2, column=1)
    frame_tableau2.grid(row=2, column=2)


Ma fenêtre possède plusieurs frames avec différents widgets (frame, frame2, right_frame) et j'ai fait deux boutons qui me permettent de basculer d'un ensemble de frames à un autre, de sorte à faire un menu. Pour cela, j'ai utilisé la méthode
forget()
.

Mon code parle d'un tableau, car c'est ce que je veux construire. J'ai donc répété la création d'une entrée de sorte à en construire une par cellule (cell). Cette partie-la, je ne l'ai pas développée, car je bloque sur le positionnement du tableau.

Voila voila, merci de votre intelligence =)
A voir également:

2 réponses

balkis3005 Messages postés 9 Date d'inscription dimanche 13 mars 2022 Statut Membre Dernière intervention 1 avril 2022
17 mars 2022 à 19:28
oups j'a oublié d'activer les notifications.... =(
(message pour que je les actives, merci de répondre donc a ce message )
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
18 mars 2022 à 09:14
Bonjour,
l'indentation étant importante en Python, peux-tu afficher ton code avec les balises:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 7 802
Modifié le 18 mars 2022 à 17:50
Petite précision à balkis car ça n'est pas la première fois que je corrige tes messages. Tu utilises mal les balises. Le code doit être encadré par la balise ouvrante (e.g.
<code python>
) et la balise fermante (
</ code>
-- je rajoute une espace derrière le / pour que mon message s'affiche bien sur le site mais il ne faut pas le rajouter) donc par exemple :

<code python>
def toto():
    pass
</ code>


Concernant ta question, as-tu regardé ce tutoriel ?
0