我发现了一些与这个问题相关的问题和答案,但是没有一个解决方案让我理解为什么这段代码不起作用:
root=tk.Tk()
vscrollbar = tk.Scrollbar(root)
c= tk.Canvas(root,background = "#D2D2D2",yscrollcommand=vscrollbar.set)
vscrollbar.config(command=c.yview)
vscrollbar.pack(side=tk.LEFT, fill=tk.Y)
f=tk.Frame(c) #Create the frame which will hold the widgets
c.pack(side="left", fill="both", expand=True)
c.create_window(0,0,window=f)
testcontentA = tk.Label(f,wraplength=350 ,text=r"Det er en kendsgerning, at man bliver distraheret af læsbart indhold på en side, når man betragter dens websider, som stadig er på udviklingsstadiet. Der har været et utal af websider, som stadig er på udviklingsstadiet. Der har været et utal af variationer, som er opstået enten på grund af fejl og andre gange med vilje (som blandt andet et resultat af humor).")
testcontentB = tk.Button(f,text="anytext")
testcontentA.pack()
testcontentB.pack()
f.pack()
c.config(scrollregion=c.bbox("all"))
root.mainloop()
我有一个tkinter窗口,其中包含动态生成的内容 - 这意味着如果屏幕上要显示的小部件太多,则需要能够向下滚动。我希望能够使用小部件填充框架“f”,然后使用canvas.create_window()函数以可滚动的方式显示它。
目前窗口已显示,但滚动条未启用 - 就像scrollregion不正确或滚动条与画布之间的链接不正确一样。