如何调整Tkinter带滚动条的Frame使其完全填满界面中的黑色区域
要让带滚动条的Frame完全覆盖黑色区域,只需调整3处布局配置即可,修改后的完整可运行代码如下:
修改核心点
- 调整外层容器
wrapper1的pack参数,移除错误的上下边距配置,设置fill=BOTH让容器自动撑满右侧可用空间,上下边距调整为匹配背景黑色区域的75像素 - 画布
mycanvas的pack参数新增fill=BOTH和expand=True,让画布撑满整个wrapper1容器,取消固定宽高限制 - 新增画布大小变化时的内部Frame宽度同步逻辑,保证内容宽度适配画布宽度,避免左右留空
from tkinter import * from tkinter import ttk C = Tk() C.maxsize(1200, 750) C.geometry("1200x750") C.title("Mainscreen") style = ttk.Style() style.theme_use('clam') # 素材路径替换为你本地的实际存储路径即可 BG = PhotoImage(file="Mainscreen bg.png") ML = PhotoImage(file="Music_label.png") BG_label = Label(C, image=BG, border=0) BG_label.place(x=0, y=0) style.configure("Vertical.TScrollbar", gripcount=0, background="Cyan", darkcolor="gray6", lightcolor="LightGreen", troughcolor="Turquoise4", bordercolor="gray6", arrowcolor="gray6",arrowsize=15) wrapper1= LabelFrame(C, background="gray6",bd=0) # 画布取消固定宽高,设置自适应填充 mycanvas = Canvas(wrapper1,background="gray6",borderwidth=0, highlightthickness=0) mycanvas.pack(side=LEFT, fill=BOTH, expand=True, padx=0) yscrollbar = ttk.Scrollbar(wrapper1, orient="vertical",command=mycanvas.yview) yscrollbar.pack(side=RIGHT, fill="y") mycanvas.configure(yscrollcommand=yscrollbar.set) # 配置事件同时更新滚动区域和内部Frame宽度 def update_canvas(e): mycanvas.configure(scrollregion=mycanvas.bbox("all")) mycanvas.itemconfig(myframe_window, width=e.width) mycanvas.bind('<Configure>', update_canvas) myframe = Frame(mycanvas) myframe_window = mycanvas.create_window((0,0), window=myframe, anchor="n") # 调整wrapper1的布局参数,适配右侧黑色区域 wrapper1.pack(side=RIGHT, fill=BOTH, expand=True, padx=0, pady=75) for i in range(50): Button(myframe, image=ML,bg="gray6",bd=0).pack(pady=2) mainloop()
内容的提问来源于stack exchange,提问作者Manan Tandel
相关产品推荐
相关产品推荐

