Как увеличить колесо прокрутки при добавлении элемента во фрейм?
Есть область где динамически добавляются элементы, их нужно прокручивать с помощью scrollbar, и когда их добавляешь заранее, то всё работает, а когда добавляешь динамически, то всё ломается. Можно ли это исправить?
вот код:
import tkinter as tk
class Rows():
def __init__(self, row_place, name='', time1='', time2='', phone=''):
self.name = name
self.time1 = time1
self.time2 = time2
self.phone = phone
self.txt_names = tk.Entry(row_place, width=20)
self.txt_names.grid(column=0, row=Window.row_num)
self.txt_names.insert(0, self.name)
self.txt_time1 = tk.Entry(row_place, width=10)
self.txt_time1.grid(column=1, row=Window.row_num)
self.txt_time1.insert(0, self.time1)
self.txt_time2 = tk.Entry(row_place, width=10)
self.txt_time2.grid(column=2, row=Window.row_num)
self.txt_time2.insert(0, self.time2)
self.txt_phone = tk.Entry(row_place, width=20)
self.txt_phone.grid(column=3, row=Window.row_num)
self.txt_phone.insert(0, self.phone)
Window.row_num += 1
class Window():
row_list = []
row_num = 0
def __init__(self, geometry='700x600'):
self.window = tk.Tk()
self.window.title('yes')
self.window.geometry(geometry)
self.first_frame = tk.Frame(self.window, width=550)
self.first_frame.pack(fill=tk.Y, side=tk.LEFT)
self.scr = tk.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.window, text='добавить строку', command=self.add_row)
self.row_add_button.pack(side=tk.LEFT)
for i in range(100):
Window.row_list.append(Rows(self.second_frame))
def add_row(self):
Window.row_list.append(Rows(self.second_frame))
if __name__ == '__main__':
window = Window()
window.window.mainloop()
я пытался изменить функцию add_row() чтобы в ней перепривязывались scrollbar и canvas но результата не дало
def add_row(self):
Window.row_list.append(Rows(self.second_frame))
self.scr.configure(command=self.canvas.yview)
self.canvas.configure(yscrollcommand=self.scr.set)
self.canvas.bind('<Configure>', lambda e: self.canvas.configure(
scrollregion=self.canvas.bbox('all')))