我正在使用标签来显示数据。然而,我有这么多的标签放置在彼此之下,我不能让他们都在同一个窗口。我希望使用滚动条滚动标签。不过,据我所知,这并不是那么简单。据我所知,我最好的选择是使用框架来收集我的所有标签,然后将框架插入到画布中,然后可以与滚动条平行使用,尽管我在这方面遇到了麻烦。 ,我使用创建我的标签功能是如何使用嵌入画布中的框架内的地方?
def Tab(root, y):
#Print the team
playerTeam = Label(root, bg = "white", text = "Hello")
playerTeam.config(height = 1, width = 13)
playerTeam.place(x=20,y=y)
我试图用我的功能
def onFrameConfigure(canvas):
'''Reset the scroll region to encompass the inner frame'''
canvas.configure(scrollregion=canvas.bbox("all"))
root = tk.Tk()
root.geometry("400x400")
canvas = tk.Canvas(root, borderwidth=0, background="#ffffff")
frame = tk.Frame(canvas, background="#ffffff")
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)
vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw")
frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
Tab(frame, 20)
运行时,产生一个空白窗口中添加以下代码结合。 但是,当使用.grid代替.place时,在Tab()中它正常工作,并且标签显示在窗口上。尽管当我多次调用Tab()时,标签将从窗口中移出,并且向下滚动的功能不可用。
我怎样才能让.place函数正常工作。 其次我怎样才能让滚动条正常工作。 谢谢
感谢Bryan,但我确实无法看到网格和包几何管理器与我的界面设计很好地配合。但是另外,为什么滚动条在我给出的例子中不起作用? –
滚动条不起作用,因为'scrollregion'没有设置,因为框架很小。将'scrollregion'设置为大于画布的值,并且滚动条将起作用。我敢打赌,几乎没有任何界面设计可以满足,不能使用'pack'或'grid',除了需要用户能够交互移动小部件的设计之外。 –
好的谢谢。但是,我可以使用包/网格方法,但是此时我发现很难将标签放在我想要的位置,而没有将标签设置得太紧密。 –