Tkinter滚动主框架包含其他框架

问题描述

Windows 10 Tkinter上的Python 3.8.5

我想在一个较大的框架(主框架)中放置不同的框架(每个框架都包含文本),并允许滚动主框架以查看其中的所有框架。 因此,我将主框架放置在画布中,然后使用滚动条滚动包含主框架的画布。 但是,滚动条不起作用,使用滚动条时什么也不会发生,并且无法访问主框架中的所有框架。

我不明白的第二件事是,我使用frame.pack_propagate(False)来避免主框架内的所有框架自动调整其内容的大小,但是无论如何它们都会这样做。为什么?

感谢您的帮助!

from tkinter import *

def on_configure(event):canvas.configure(scrollregion=canvas.bbox("all"))

def accueil():

    global canvas
    
    canvas=Canvas(root)
    scrollbar=Scrollbar(root,command=canvas.yview)
    canvas.configure(yscrollcommand=scrollbar.set)
    canvas.bind("<Configure>",on_configure)
    frame=Frame(canvas,bg="orange",width=canvas.winfo_reqwidth(),height=canvas.winfo_reqheight())
    canvas.create_window((0,0),window=frame)
    
    frame_nouveaute_1=Frame(frame,bg="red",width=300,height=150)
    frame_nouveaute_1.pack_propagate(False)
    frame_nouveaute_1.place(y=0)
    l=Label(frame_nouveaute_1,text="- Nouveauté 1",font=25,bg="red").grid(row=0)
    l=Label(frame_nouveaute_1,text="   . xxxxx",bg="red").grid(row=1)
    l=Label(frame_nouveaute_1,text="   . yyyyy",bg="red").grid(row=2)
    l=Label(frame_nouveaute_1,text="   . zzzzz",bg="red").grid(row=3)
    
    frame_nouveaute_2=Frame(frame,bg="green",height=150)
    frame_nouveaute_2.pack_propagate(False)
    frame_nouveaute_2.place(y=frame_nouveaute_1.winfo_reqheight()+10)
    l=Label(frame_nouveaute_2,text="- Nouveauté 2",bg="green").grid(row=0)
    l=Label(frame_nouveaute_2,bg="green").grid(row=1)
    l=Label(frame_nouveaute_2,bg="green").grid(row=2)
    l=Label(frame_nouveaute_2,bg="green").grid(row=3)
    
    frame_nouveaute_3=Frame(frame,bg="blue",height=150)
    frame_nouveaute_3.pack_propagate(False)
    frame_nouveaute_3.place(y=frame_nouveaute_1.winfo_reqheight()+10+frame_nouveaute_2.winfo_reqheight()+10)
    l=Label(frame_nouveaute_3,text="- Nouveauté 3",bg="blue").grid(row=0)
    l=Label(frame_nouveaute_3,bg="blue").grid(row=1)
    l=Label(frame_nouveaute_3,bg="blue").grid(row=2)
    l=Label(frame_nouveaute_3,bg="blue").grid(row=3)
    
    canvas.place(y=25)
    scrollbar.pack(side="right",fill="y")

root=Tk()
root.geometry("%dx%d+%d+%d"%(500,350,10,10))

accueil()

root.mainloop()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...