我想在窗口的左侧与画布的width=320框架,在其中我必须显示来自文件的数据。在该画布上将有许多小部件(数据),所以我还想在其中使用滚动条。当我使用bg=()时,窗口上什么也没有显示--甚至连带有“天蓝”的框架都看不见。请告诉我出什么事了。我已经尝试了fill=BOTH,expand=True等的所有组合,但我仍然无法做出我想要的东西。
root = Tk()
root.state('zoomed') #zooms the screen to maxm whenever executed
root.geometry('550x650')
root.minsize(550,650)
#Frame inside root
ContactDetails_frame = Frame(root,width=320,bg='sky blue',bd=2, relief=RIDGE)
ContactDetails_frame.pack(side=LEFT,fill=BOTH)
#Canvas inside the frame
canvas = Canvas(ContactDetails_frame,width=320,bg='sky blue',scrollregion=(30,0,1000,1000))
canvas.pack(fill=BOTH,expand=True)
#Vertical scrollbar for canvas
scrollbar = Scrollbar(canvas,orient=VERTICAL)
scrollbar.pack(side=RIGHT,fill=Y,expand=True)
#Attach scrollbar to canvas
canvas.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=canvas.yview)
#Here are the widgets
FirstName = Label(canvas, text="First name: ", font=(12),bg='sky blue',fg='black')
canvas.create_window(10,175, window=FirstName)
MiddleName = Label(canvas, text="Middle name: ",font=(12),bg='sky blue',fg='black')
canvas.create_window(10,195, window=MiddleName)
LastName = Label(canvas, text="Last name: ",font=(12),bg='sky blue',fg='black')
canvas.create_window(10,215, window=LastName)
NickName = Label(canvas, text="Nick name: ",font=(12),bg='sky blue',fg='black')
canvas.create_window(10,235, window=NickName)
Note = Label(canvas, text="Note: ",font=(12),bg='sky blue',fg='black')
canvas.create_window(10,855, window=Note)
root.mainloop()
发布于 2020-10-17 23:05:06
当您将滚动条放入画布中时,画布将收缩以适合滚动条。几乎没有一个很好的理由将滚动条放在画布内,因为它会覆盖边缘上的任何对象。在大多数情况下,画布和滚动条需要有一个共同的父级。
canvas = Canvas(ContactDetails_frame, ...)
scrollbar = Scrollbar(ContactDetails_frame, ...)
scrollbar.pack(side="right",fill=Y)
canvas.pack(side="left", fill=BOTH,expand=True)
发布于 2020-10-17 14:06:39
试着给框架和画布赋予高度。注意,框架和画布的单位是不同的,这意味着由于单位不同,宽度320的框架比宽度320的画布要小。同样,身高也是如此。
有关tkinter的备注,请访问:
https://stackoverflow.com/questions/64398670
复制相似问题