python - 在可滚动框架内居中和展开小部件
问题描述
我在这里有这段代码:
root = Tk()
container = Frame(root)
canvas = Canvas(container, borderwidth = 0, highlightthickness = 0, width=500, height=500, bg = "white")
scrollbar = Scrollbar(container, orient="vertical", command=canvas.yview)
scrollable_frame = Frame(canvas)
scrollable_frame.bind(
"<Configure>",
lambda e: canvas.configure(
scrollregion=canvas.bbox("all")
)
)
canvas.create_window((0, 0), window=scrollable_frame)
canvas.configure(yscrollcommand=scrollbar.set)
root.geometry("700x600")
coordF=LabelFrame(scrollable_frame,text='c')
coordF.pack(side = 'top')
Label(coordF,text='q',font=('Bahnschrift SemiLight', 15)).grid(row=0,column=0)
Label(coordF,text='d:',font=('Bahnschrift SemiLight', 15)).grid(row=1,column=0)
v = StringVar(value=None)
e1=Entry(coordF, textvariable=v)
e1.grid(row=0,column=1)
e2=Entry(coordF)
e2.grid(row=1,column=1)
scalF=LabelFrame(scrollable_frame,text='d')
scalF.pack()
e3=Button (scalF, text='f',font=('Bahnschrift SemiLight', 12),command=random, bg="grey")
e3.pack(side='top')
chosenFile = Label(scalF,textvariable=file_result,font=('Bahnschrift SemiLight', 10), wraplength=300)
chosenFile.pack(side='top')
scalOut=LabelFrame(scrollable_frame,text='hg')
scalOut.pack()
Label(scalOut,textvariable=xt,font=('Bahnschrift SemiLight', 12), wraplength=450).pack()
Label(scalOut,textvariable=frr,font=('Bahnschrift SemiLight', 12), wraplength=450).pack()
container.pack(expand=True)
canvas.pack(side="left", fill="both")
scrollbar.pack(side="right", fill="y")
optF=LabelFrame(root,text="zh")
optF.pack(side = 'top')
root.mainloop()
可滚动框架中的元素始终显示在可滚动框架的左上角。我尝试使用网格和打包使它们位于中心并展开,但没有任何移动。好吧,也许我不知道把我的代码放在哪里。无论如何,我希望小部件在可滚动框架中居中并相互扩展。这可以澄清这个想法:
解决方案
您可以使用以下方法将 的宽度扩展为scrollable_frame
与画布的宽度相同canvas.itemconfig()
:
frame_id = canvas.create_window((0, 0), window=scrollable_frame, anchor='nw')
canvas.itemconfig(frame_id, width=canvas.winfo_reqwidth())
里面的那些框架scrollable_frame
将水平居中,因为.pack(side='top')
在它们上面使用。
对于垂直可滚动的框架,垂直扩展和居中是没有意义的。
推荐阅读
- swift - CallerID 分机的最大限制
- java - 如何使用 Android Studio 实现 LAN Scanner?
- google-cloud-functions - 移动现有的 mqtt-iot 设备以使用 Google 云
- postgresql - postgres 用 string_agg 分组
- r - 为数据帧列表中的每个数据帧按列计算列中值绝对偏差 (MAD)
- r - 随机排序组内的行
- windows - 是否可以进行 Windows 系统调用来查看进程当前正在使用的操作系统线程数?
- android - android 应用程序在启动时崩溃(致命异常,没有为 ID 0xffffffff 找到包 ID ff)
- nginx - 在 docker 文件中添加 Nginx 的健康检查
- node.js - 使用 Formik 会导致我的网络应用出现问题