Sep-27-2019, 07:55 AM
Hello everybody.
I use this script and it works good.
But, i don't know how to do Frame(body) more bigger by vertically.
Could somebody help me?
I use this script and it works good.
But, i don't know how to do Frame(body) more bigger by vertically.
Could somebody help me?



import tkinter as tk from tkinter import ttk from tkinter import * class Scrollable(tk.Frame): """ Make a frame scrollable with scrollbar on the right. After adding or removing widgets to the scrollable frame, call the update() method to refresh the scrollable area. """ def __init__(self, frame, width=16): scrollbar = tk.Scrollbar(frame, width=width) scrollbar.pack(side=tk.RIGHT, fill=tk.Y)#, expand=False) self.canvas = tk.Canvas(frame, yscrollcommand=scrollbar.set) self.canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) scrollbar.config(command=self.canvas.yview) self.canvas.bind('<Configure>', self.__fill_canvas) # base class initialization tk.Frame.__init__(self, frame) # assign this obj (the inner frame) to the windows item of the canvas self.windows_item = self.canvas.create_window(0,0, window=self, anchor=tk.NW) def __fill_canvas(self, event): "Enlarge the windows item to the canvas width" canvas_width = event.width self.canvas.itemconfig(self.windows_item, width = canvas_width) def update(self): "Update the canvas and the scrollregion" self.update_idletasks() self.canvas.config(scrollregion=self.canvas.bbox(self.windows_item)) root = tk.Tk() root.geometry('1000x700+100+50') root.resizable('False','False') header = Frame(root) body = Frame(root) footer = Frame(root) header.pack() body.pack(fill='x') footer.pack() header.configure(width=200, height=100) l1=Label(header, text="The header") l1.grid(column=0,row=0) ttk.Label(footer, text="The Footer").pack() scrollable_body = Scrollable(body, width=32) for i in range(30): ttk.Button(scrollable_body, text="I'm a button in the scrollable frame").grid(column=0,row=i) ttk.Button(scrollable_body, text="I'm").grid(column=1,row=i) scrollable_body.update() root.mainloop()