отображение объектов за пределами frame

В canvas добавляются виджеты и когда их слишком много то можно просмотреть с помощью scrollbar, но при прокрутке эти виджеты закрывают верхнюю часть, и тогда отпадает возможность переключаться между вкладками. Я хочу, чтобы эти элементы пропадали за рамками фрейма, а не закрывали контент, но не знаю как сделать это.

код

import tkinter as tk
from tkinter import ttk

class Rows():

    def __init__(self, row_place):

        self.examle1 = tk.Entry(row_place, width=15)
        self.examle1.grid(column=1, row=Window.row_num)

        self.examle2 = tk.Entry(row_place, width=10)
        self.examle2.grid(column=2, row=Window.row_num)

        self.examle3 = tk.Entry(row_place, width=10)
        self.examle3.grid(column=3, row=Window.row_num)

        self.examle4 = tk.Entry(row_place, width=15)
        self.examle4.grid(column=4, row=Window.row_num)

        Window.row_num += 1


class Window():

    row_list = []
    row_num = 1

    def __init__(self, geometry='700x600'):

        self.window = tk.Tk()
        self.window.title('yes')
        self.window.geometry(geometry)

        self.note = ttk.Notebook(self.window, height=600)
        self.note.pack(fill = tk.BOTH, side=tk.TOP)

        self.second_page = tk.Frame(self.window)
        self.second_page.pack(fill = tk.BOTH)

        self.first_page = tk.Frame(self.window)
        self.first_page.pack(fill=tk.BOTH)

        self.first_frame = tk.Frame(self.first_page, width=400)
        self.first_frame.pack(fill=tk.BOTH, side=tk.LEFT)
        self.first_frame.pack_propagate(False)

        self.scr = ttk.Scrollbar(self.first_frame)
        self.scr.pack(fill=tk.Y, side=tk.RIGHT)

        self.canvas = tk.Canvas(self.first_frame, yscrollcommand=self.scr.set)
        self.canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.scr.configure(command=self.canvas.yview)

        self.canvas.bind('<Configure>', lambda e: self.canvas.configure(scrollregion=self.canvas.bbox('all')))

        self.second_frame = tk.Frame()

        self.canvas.create_window((0, 0), window=self.second_frame, anchor='nw')

        self.row_add_button = tk.Button(self.first_page, text='добавить строку', width=100, command=self.add_row)
        self.row_add_button.pack(side=tk.TOP)

        self.note.add(self.first_page)
        self.note.add(self.second_page)
        
    def add_row(self):
        Window.row_list.append(Rows(self.second_frame))
        self.canvas.configure(scrollregion=self.canvas.bbox('all'))


if __name__ == '__main__':
    window = Window()
    window.window.mainloop()


Ответы (0 шт):