我无法让顶级窗口内的画布通过滚动条滚动

问题描述 投票:0回答:1

我遵循了 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()

我一直在倒带,但一直不明白为什么我的滚动条不起作用,我希望得到诚实的答案。一切加载正常,在运行程序之前和关闭程序之后我没有收到错误。希望这段代码有帮助。

python python-3.x tkinter scrollbar tkinter-canvas
1个回答
0
投票

问题在于

frame_canvas
None
,这会导致它及其子窗口出现在根窗口中。它是
None
,因为你将它设置为调用
pack
的结果,而
pack
总是返回
None

您需要创建

frame_canvas
,然后在不同的线路上调用
pack

frame_canvas = tk.Frame(canvas)
frame_canvas.pack()
© www.soinside.com 2019 - 2024. All rights reserved.