我遵循了 youtube 上关于如何在 python 中制作滚动条的教程,它对这个人有效,但对我无效。复制他所做的事情并运行后,我的屏幕上出现了一个滚动条,但它似乎什么也没做。现在我跳到了另一个教程,那里的人做了不同的事情,现在我陷入了无人区,我很快就失去了希望。 这是一段代码:
# Content
# scrollbar
canvas = tk.Canvas(window_automation_creator, scrollregion=(0,0,2000,5000))
canvas.pack(expand=True, fill='both')
scrollbar = tk.Scrollbar(window_automation_creator, orient='vertical', command=canvas.yview)
canvas.configure(yscrollcommand=scrollbar.set)
scrollbar.place(relx=1,rely=0,relheight=1,anchor='ne')
frame_canvas = tk.Frame(canvas).pack()
canvas.create_window((0,0), window=frame_canvas, anchor='nw')
# 'add' button
button_add = tk.Button(frame_canvas, text='ADD', width=10, height=2).pack()
# test
for i in range(100):
i = tk.Button(frame_canvas, text=i).pack()
我一直在倒带,但一直不明白为什么我的滚动条不起作用,我希望得到诚实的答案。一切加载正常,在运行程序之前和关闭程序之后我没有收到错误。希望这段代码有帮助。
问题在于
frame_canvas
是 None
,这会导致它及其子窗口出现在根窗口中。它是None
,因为你将它设置为调用pack
的结果,而pack
总是返回None
。
您需要创建
frame_canvas
,然后在不同的线路上调用 pack
。
frame_canvas = tk.Frame(canvas)
frame_canvas.pack()