Vertical scrollbar for frame in Tkinter, Python

后端 未结 1 1774
执念已碎
执念已碎 2020-12-04 02:15

My aim is to have a scrollbar that stays at the right-side of a full-screen window, allowing the user to scroll up and down through various different widgets (such as labels

相关标签:
1条回答
  • 2020-12-04 02:38

    See again link: https://stackoverflow.com/a/3092341/7432

    It shows how to create scrolled frame - and then you can add all widgets in this frame.

    import tkinter as tk
    
    
    def on_configure(event):
        # update scrollregion after starting 'mainloop'
        # when all widgets are in canvas
        canvas.configure(scrollregion=canvas.bbox('all'))
    
    
    root = tk.Tk()
    
    # --- create canvas with scrollbar ---
    
    canvas = tk.Canvas(root)
    canvas.pack(side=tk.LEFT)
    
    scrollbar = tk.Scrollbar(root, command=canvas.yview)
    scrollbar.pack(side=tk.LEFT, fill='y')
    
    canvas.configure(yscrollcommand = scrollbar.set)
    
    # update scrollregion after starting 'mainloop'
    # when all widgets are in canvas
    canvas.bind('<Configure>', on_configure)
    
    # --- put frame in canvas ---
    
    frame = tk.Frame(canvas)
    canvas.create_window((0,0), window=frame, anchor='nw')
    
    # --- add widgets in frame ---
    
    l = tk.Label(frame, text="Hello", font="-size 50")
    l.pack()
    
    l = tk.Label(frame, text="World", font="-size 50")
    l.pack()
    
    l = tk.Label(frame, text="Test text 1\nTest text 2\nTest text 3\nTest text 4\nTest text 5\nTest text 6\nTest text 7\nTest text 8\nTest text 9", font="-size 20")
    l.pack()
    
    # --- start program ---
    
    root.mainloop()
    
    0 讨论(0)
提交回复
热议问题