【发布时间】:2021-09-18 22:12:34
【问题描述】:
如何在函数外部访问 scroll_frame,以便 new_frame 位于下面代码中的 scroll_frame 内。
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()
【问题讨论】:
-
为什么要把这些代码放在
scroll()里面? -
如果scroll_frame是new_frame的父级,那么它必须在new_frame之前创建。
-
@acw1668,因为我想要很多帧的滚动条,我不想一次又一次地使用相同的代码。这就是为什么我制作了一个滚动功能,以便将每个新创建的框架放入滚动框架中
-
@8349697,是的,我知道这一点。但我只想制作一次滚动功能,并在必要时使用它。所以请告诉我这个函数是如何工作的。
-
尝试从函数中返回创建的scroll_frame对象。
标签: python tkinter scrollbar frame