1 pièce(s) jointe(s)
[Python 3.6] Tkinter se bloque quand j'insère un nombre élevé de text widget
J'ai réalisé plusieurs classes afin d'importer des lignes d'un fichiers excel, et les insérer sous forme d'un tableau.
Pour créer un tableau, j'ai ajouter à ma fenêtre des text widget pour chaque case. Ceci pour que je puisse après modifier chaque cases depuis mon interface. Tout mon code marchait bien quand je passai en paramètre un fichier de lignes d'ordre 1000. Une fois j'ai augmenté le nombre de ligne, ma fenêtre s'est bloqué, et il y a une petit fenêtre qui s'affiche en haut à gauche qui défile toutes les cases qui devrait être dans ma fenêtre principale. Pour illustrer mon problème j'ai créer le petit code suivant qui montre exactement ma situation. Et je joins aussi l'image de mon interface avec la petite fenêtre qui s'affiche.
Code:
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
| import tkinter as tk
fenetre=tk.Tk()
### This part is for the frame with a scroll bar
def myfunction(event):
canvas.configure(scrollregion=canvas.bbox("all"),width=1800,height=500)
canvas=tk.Canvas(fenetre)
frame=tk.Frame(canvas)
myscrollbar=tk.Scrollbar(fenetre,orient="vertical",command=canvas.yview)
canvas.configure(yscrollcommand=myscrollbar.set)
myscrollbar.pack(side="right",fill="y")
canvas.pack(side="left")
canvas.create_window((0,0),window=frame,anchor='nw')
frame.bind("<Configure>",myfunction)
can = tk.Canvas(frame, width=1000, height=1000)
can.grid()
#End of my fram
def click_Button():
for ligne in range(2000):
for colonne in range(10):
t=tk.Text(can,width=12, height=3)
t.insert('1.0',"salut"+str(ligne+colonne))
t.grid(row=ligne, column=colonne+1,sticky='nesw')
fenetre.update_idletasks() #Refresh the window after adding text widgets
button=tk.Button(can,text="generer",command=click_Button)
button.grid()
fenetre.mainloop() |
Pièce jointe 389470