Написал приложение, где состояния виджетов описываются достаточно большим количеством параметров. Теперь нужно как-то сохранять эти состояния в файл, а потом загружать их снова. Понимаю, что можно написать систему сохранения, где функция аккуратно берёт параметры каждого виджета и записывает в словарь. Но это долго писать, параметров много, виджеты разные. К тому же, при загрузке нужно прописывать создание виджетов по этим параметрам.
Пробовал pickle, в том числе с highProtocol ,пишет no default __reduce__ due to non-trivial __cinit__
Есть ли способ быстро записать в файл состояние рут- виджета и всех его детей, а затем также легко из этого файла создать рут-виджет в сохраненном состоянии?
Посмотри на вопрос с другой стороны.
Состояние виджетов наверняка определяется чем-то другим - состоянием приложения, которое описывается в терминах той предметной области, с которой ты имеешь дело.
Опиши состояние приложения как класс, научись сохранять/загружать его без привязки к GUI.
Потом научись создавать GUI на основании экземпляра этого класса.
А потом меняй экземпляр этого класса при операциях с GUI.
Почитай про паттерн Model-View-Intent, он примерно про это.