我想要在窗口左侧有一个宽度= 320的框架,并带有一个画布,其中必须显示文件中的数据。 该画布上将有许多小部件(数据),因此我也想在其中使用滚动条。 当我使用pack()时,窗口上没有任何显示-甚至看不到带有bg =“ sky blue”的框架。请告诉我怎么了。我已经尝试过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()
答案 0 :(得分:0)
将滚动条包装在画布中时,画布将收缩以适合滚动条。几乎没有理由将滚动条放在画布内,因为它将覆盖边缘上的所有对象。在大多数情况下,画布和滚动条需要具有共同的父代。
canvas = Canvas(ContactDetails_frame, ...)
scrollbar = Scrollbar(ContactDetails_frame, ...)
scrollbar.pack(side="right",fill=Y)
canvas.pack(side="left", fill=BOTH,expand=True)
答案 1 :(得分:-1)
尝试为可能要工作的框架和画布增加高度 请注意,框架和画布的单位不同,这意味着 宽度为320的框架小于宽度为320的画布 由于单位不同。相似,高度也是如此
有关tkinter的笔记,您可以访问: