Python 画布上的滚动条,其中包含多个帧

Python 画布上的滚动条,其中包含多个帧,python,canvas,tkinter,Python,Canvas,Tkinter,晚上好,, 我使用Python和sqlite制作了一个包含许多(数学)练习的数据库。通过搜索,我想用多个帧显示画布中的所有练习(每个帧包含一个带有gif图像的练习)。所以我做了一个滚动条,看起来很好用。但是,当我想显示所有的练习(85)时,它停在数字82处,我不知道为什么。。。我们可以放入框架中的小部件数量有限制吗? 这是我的代码(很抱歉我的英语不好): enonce_exercice是一个显示exercice图像的类。 非常感谢。画布内的坐标系有一个限制。听起来像是你击中了它。谢谢。那么,对于

晚上好,, 我使用Python和sqlite制作了一个包含许多(数学)练习的数据库。通过搜索,我想用多个帧显示画布中的所有练习(每个帧包含一个带有gif图像的练习)。所以我做了一个滚动条,看起来很好用。但是,当我想显示所有的练习(85)时,它停在数字82处,我不知道为什么。。。我们可以放入框架中的小部件数量有限制吗? 这是我的代码(很抱歉我的英语不好):

enonce_exercice是一个显示exercice图像的类。
非常感谢。

画布内的坐标系有一个限制。听起来像是你击中了它。谢谢。那么,对于我想做的事情,有什么解决方案吗?也就是说,即使有100000个图像,也会显示所有图像……为了深入了解帮助,您能否提供一个?无法再现观察到的限制(添加1000个
类enonce\u exercice(Canvas)
具有
标签
)。你能提供更多关于
enonce\u exercice()
的详细信息吗?我找到了一个解决方案:我每页只显示20个exercies(其图像),并带有一个按钮,可以转到下一页,依此类推。我的代码太长,无法放在这里。。。。谢谢
class liste_exercices(Toplevel):
def __init__(self,parent,liste_numeros):
Toplevel.__init__(self,parent)
self.parent=parent
self.liste_numeros=liste_numeros
self.geometry("1140x1080+800+0")
# donne le titre de la fenêtre
self.title("Nombre d' exercices trouvés : "+str(len(self.liste_numeros)))
self.vsb=Scrollbar(self,orient=VERTICAL,width=20)
self.vsb.grid(row=0,column=1,sticky=N+S)
self.c=Canvas(self,width=1240,yscrollcommand=self.vsb.set)
self.c.grid(row=0,column=0,sticky="news")
#on attache le canvas à la scrollbar
self.vsb.config(command=self.c.yview)
# make the canvas expandable
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
self.fr=Frame(self.c)
# on crée une fenêtre pour mettre le Frame self.fr dans le canvas self.c
self.c.create_window(0,0,window=self.fr)
global liste_choix_exercices
liste_choix_exercices=[] ### liste vide des exercices de l'utilisateur
self.afficher()  
def afficher(self):
   r=0
   for self.i in range(len(self.liste_numeros)):
       r+=1
       print("j'affiche l'image self.i = ",self.liste_numeros[self.i])
       enonce_exercice(self.fr,self.liste_numeros[self.i]).grid(row=r)
   self.fr.update_idletasks()
   self.c.config(scrollregion=self.c.bbox(ALL))