我在这里有这个代码:
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()
可滚动框架中的元素始终显示在可滚动框架的左上角。我尝试了网格和包,使他们在中心和扩展,但没有移动。好吧,也许我不知道该把代码放在哪里。无论如何,我希望小部件在可滚动的框架中居中并彼此展开。这可能会澄清这个想法:
发布于 2021-10-07 02:18:30
您可以使用canvas.itemconfig()
将scrollable_frame
的宽度扩展为与画布的宽度相同
frame_id = canvas.create_window((0, 0), window=scrollable_frame, anchor='nw')
canvas.itemconfig(frame_id, width=canvas.winfo_reqwidth())
因为使用了.pack(side='top')
,所以scrollable_frame
中的那些帧将水平居中。
对于可垂直滚动的框架,在垂直方向上扩展和居中是没有意义的。
https://stackoverflow.com/questions/69478232
复制相似问题