如何访问函数外部的滚动框,使新的滚动框位于下面代码中的滚动框内。
def scroll():
container = LabelFrame(root)
my_canvas = Canvas(container)
my_canvas.pack(side=LEFT, fill=BOTH, expand=1)
scroll_y = Scrollbar(container, orient=VERTICAL, command=my_canvas.yview)
scroll_y.pack(side=RIGHT, fill='y')
my_canvas.configure(yscrollcommand=scroll_y.set)
my_canvas.bind('<Configure>', lambda e: my_canvas.configure(scrollregion=my_canvas.bbox('all')))
scroll_frame = Frame(my_canvas)
my_canvas.create_window((0, 0), window=scroll_frame, anchor=NW)
container.pack(fill=BOTH, expand=1)
new_frame = Frame(scroll_frame)
for i in range(25):
Button(new_frame, text='click'+str(i)).pack()
scroll()
root.mainloop()
1条答案
按热度按时间nbewdwxp1#
如果您想访问
scroll_frame
,您应该从scroll()
.建议返回
container
也一样,不要打电话container.pack(...)
在…内scroll()
因为它更灵活。还建议将家长传递给
scroll()
也不是硬编码的root
里面。请注意,如果要使用
scroll()
反复使用,更好地使用类而不是函数。更新:使用类实现: