Pb : barre de scroll python tkinter pour un tableau
Fermé
TimPython
-
Modifié le 2 mai 2022 à 11:45
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 3 mai 2022 à 18:07
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 3 mai 2022 à 18:07
7 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 2 mai 2022 à 17:38
Modifié le 2 mai 2022 à 17:38
Bonjour,
Tu devrais afficher ton code avec les balises de code Python:
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ça:
Sinon, bizarre, pas de fen.mainloop() dans ton code
en général, on crée une instance d'une classe comme ceci:
On se demande si tu ne voulais pas plutôt créer une fonction tableau au lieu d'une classe ...
Tu as quoi comme erreur ?
Tu devrais afficher ton code avec les balises de code Python:
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ça:
for k in range(10): print(k)
Sinon, bizarre, pas de fen.mainloop() dans ton code
tableau(tableau1) :
en général, on crée une instance d'une classe comme ceci:
mon_tableau = tableau(tableau1)
On se demande si tu ne voulais pas plutôt créer une fonction tableau au lieu d'une classe ...
Tu as quoi comme erreur ?
Oups désolé c'est la première fois que je poste ici :)
Et j'ai ces erreurs là :
Traceback (most recent call last):
File "C:\Users\timle\Documents\04-COURS\05-NSI\testtablo.py", line 38, in <module>
tableau(tableau1)
File "C:\Users\timle\Documents\04-COURS\05-NSI\testtablo.py", line 25, in __init__
self.e = Entry(tableau1, width=10, fg='blue',font=('Arial',16), xscrollcommand=h.set, yscrollcommand=v.set)
File "C:\Users\timle\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 3064, in __init__
Widget.__init__(self, master, 'entry', cnf, kw)
File "C:\Users\timle\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 2601, in __init__
self.tk.call(
_tkinter.TclError: unknown option "-yscrollcommand"
Merci de m'aider !
from tkinter import * fen = Tk() fen.geometry('1500x800') fen.grid() tableau1 = Frame(fen, width=1100, height=700,) tableau1.config(background="#45B39D") tableau1.grid_propagate(0) data = [["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrf","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfrf","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"]] class tableau: def __init__(self, tableau1): h = Scrollbar(tableau1, orient='horizontal') h.pack(side=BOTTOM, fill=X) v = Scrollbar(tableau1) v.pack(side=RIGHT, fill=Y) for i in range(total_rows): for j in range(total_columns): self.e = Entry(tableau1, width=10, fg='blue',font=('Arial',16), xscrollcommand=h.set, yscrollcommand=v.set) self.e.grid(row=i, column=j) self.e.insert(END, data[i][j]) self.e.config(state="disabled") self.e.pack(side=TOP, fill=NONE) h.config(command=e.xview) v.config(command=e.yview) total_rows = len(data) total_columns = len(data[0]) tableau(tableau1) fen.mainloop()
Et j'ai ces erreurs là :
Traceback (most recent call last):
File "C:\Users\timle\Documents\04-COURS\05-NSI\testtablo.py", line 38, in <module>
tableau(tableau1)
File "C:\Users\timle\Documents\04-COURS\05-NSI\testtablo.py", line 25, in __init__
self.e = Entry(tableau1, width=10, fg='blue',font=('Arial',16), xscrollcommand=h.set, yscrollcommand=v.set)
File "C:\Users\timle\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 3064, in __init__
Widget.__init__(self, master, 'entry', cnf, kw)
File "C:\Users\timle\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 2601, in __init__
self.tk.call(
_tkinter.TclError: unknown option "-yscrollcommand"
Merci de m'aider !
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
2 mai 2022 à 17:48
2 mai 2022 à 17:48
Ok, mais .... ma remarque sur l'utilisation de la classe, tu en penses quoi ?
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
2 mai 2022 à 18:00
2 mai 2022 à 18:00
bizarre tout ça, moi quand j'enlève tout ce qui concerne le scroll, j'ai une fenêtre vide ...
je suis curieux de voir le code original, tu as le lien vers le site ?
je suis curieux de voir le code original, tu as le lien vers le site ?
Autant pour moi, j'avais oublié de copier le "tableau1.place(x=10, y=50)"
Ce qui donne donc (sans le scroll) :
Ce qui donne donc (sans le scroll) :
fen.geometry('1500x800') fen.grid() tableau1 = Frame(fen, width=1100, height=700,) tableau1.config(background="#45B39D") tableau1.grid_propagate(0) tableau1.place(x=10, y=50) data = [["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrf","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfrf","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"]] class tableau: def __init__(self, tableau1): for i in range(total_rows): for j in range(total_columns): self.e = Entry(tableau1, width=10, fg='blue',font=('Arial',16)) self.e.grid(row=i, column=j) self.e.insert(END, data[i][j]) self.e.config(state="disabled") total_rows = len(data) total_columns = len(data[0]) tableau(tableau1) fen.mainloop()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Et ce qui donne avec le scroll qui fait des erreurs :
Toujours les mêmes erreurs...
from tkinter import * fen = Tk() fen.geometry('1500x800') fen.grid() tableau1 = Frame(fen, width=1100, height=700,) tableau1.config(background="#45B39D") tableau1.grid_propagate(0) tableau1.place(x=10, y=50) data = [["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrf","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfrf","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"],["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["frfrfr","Bruno",20,14,3],["Hardelepique","Helmut",10,6,"abs"]] class tableau: def __init__(self, tableau1): h = Scrollbar(tableau1, orient='horizontal') h.pack(side=BOTTOM, fill=X) v = Scrollbar(tableau1) v.pack(side=RIGHT, fill=Y) for i in range(total_rows): for j in range(total_columns): self.e = Entry(tableau1, width=10, fg='blue',font=('Arial',16), xscrollcommand=h.set, yscrollcommand=v.set) self.e.grid(row=i, column=j) self.e.insert(END, data[i][j]) self.e.config(state="disabled") self.e.pack(side=TOP, fill=NONE) h.config(command=e.xview) v.config(command=e.yview) total_rows = len(data) total_columns = len(data[0]) tableau(tableau1) fen.mainloop()
Toujours les mêmes erreurs...
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 3 mai 2022 à 11:25
Modifié le 3 mai 2022 à 11:25
Bonjour,
Si je comprends bien, tu as récupéré ce code sur Internet, tu ne sait pas trop ce qu'est une classe et à quoi ca sert...
Est-ce que tu comprends, par exemple, que dans ta double boucle, tu crée des Entry en les nommant "e" à chaque tour, et donc, en fin de boucle, "e" désigne la dernière Entry créée, et pas l'ensemble ...
A quoi sert la ligne 33 ?
Il doit y avoir une erreur, la ligne des titres (Nom, Prénom, ...) se répète régulièrement ...
Si je comprends bien, tu as récupéré ce code sur Internet, tu ne sait pas trop ce qu'est une classe et à quoi ca sert...
Est-ce que tu comprends, par exemple, que dans ta double boucle, tu crée des Entry en les nommant "e" à chaque tour, et donc, en fin de boucle, "e" désigne la dernière Entry créée, et pas l'ensemble ...
A quoi sert la ligne 33 ?
Il doit y avoir une erreur, la ligne des titres (Nom, Prénom, ...) se répète régulièrement ...
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
3 mai 2022 à 18:07
3 mai 2022 à 18:07
A tout hasard, je te donne un code qui fait du scroll et qui fonctionne: à toi de l'adapter ...
from tkinter import * window = Tk() scrollbar_v = Scrollbar(window) scrollbar_v.pack(side="right", fill="y") scrollbar_h = Scrollbar(window, orient=HORIZONTAL) scrollbar_h.pack(side="bottom", fill="x") listbox = Listbox(window, xscrollcommand=scrollbar_h.set, yscrollcommand=scrollbar_v.set) listbox.insert("end", 'aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbb') for i in range(50): listbox.insert("end", str(i)) listbox.pack(side="left", fill="both") scrollbar_v.config(command=listbox.yview) scrollbar_h.config(command=listbox.xview) window.mainloop()