Чтобы добавить виджеты в Canvas, вы должны использовать метод create_window
, а не grid()
. Затем вы должны обновить холст перед настройкой области прокрутки.
for i in range(30):
btn = tk.Button(buttonFrame, text=str(i+1))
buttonFrame.create_window((100,i*50), window=btn)
root.update()
buttonFrame.config(scrollregion=buttonFrame.bbox("all"))
Если вы попробуете, я подозреваю, что это не то, что вы искали, поскольку метод create_window требует абсолютного позиционирования (вы не можете использовать grid или pack). Вот почему большинство людей помещают рамку в холст и вместо этого добавляют свои виджеты. Многие люди абстрагировали этот поддельный фрейм, который на самом деле является фреймом в холсте в другом фрейме, включая меня .
Для вставок:
Создайте базовый класс для ваших сущностей.
Добавьте несколько виртуальных методов.
Переопределите DataContext.SubmitChanges
.
Вызовите DataContext.GetChangeSet ()
и итерацию по вставкам с применением функции, которую вы определили ранее.
Чтобы отменить изменения, посмотрите на мой метод расширения .
Что ж, создание исключения фактически отменит изменение ... хотя и немного резкое.
Еще одна точка расширения - переопределение SubmitChanges
для данных. -context, чтобы получить ожидающие изменения ( GetChangeSet
), выполнить любые окончательные изменения (возможно, одитинг), а затем вызвать base.SubmitChanges
. После этого вы можете поместить любые операции после сохранения после (используя набор изменений, полученный вами до сохранения).