@lutokris

Как будет правильнее писать оконное приложение используя Tkinter?

Пытаюсь написать простейшее приложение. Конкретно именно вопрос в последнем абзаце поста.
Описание приложения:
Создал sqlite базу с тремя таблицами - people_list, city_list, organization_list. В левой части приложения прикреплен листбокс UsersListbox - куда заносится из таблицы people_list список всех добавленных человеков. В правой части есть пустой листбокс MemberListbox - куда мы можем добавлять участников из левой части. Внизу есть кнопка "Добавить нового члена", при нажатии которой открывается модальное окно с полями ФИО, City, Organization. Там также есть кнопки "Добавить город", "Добавить организацию", при нажатии которых тоже открывается новое модальное окно для добавления нового города или новой организации в базу. Желаемый функционал я сделал - города, организации, люди в справочник добавляются и их можно выбрать в правую часть окна. Но мне не нравится как я все это сделал, у меня такое ощущение что я сделал через "одно место" и у меня какой-то спагетти код вышел. Я не смог все это сделать применяя классы и принципы ООП. Я сделал через обычное функциональное программирование и применяя глобальные переменные. У меня вышла следующая структура приложения:

Глобальные переменные:
USER_LIST, CITY_LIST, ORGANIZATION_LIST
Функции обновления глобальных переменных из базы данных:
load_user, load_city, load_organization
Функции загрузки в листбокс из глобальных переменных:
load_user_to_listbox
Функции открытия модальных окон:
add_new_member, add_new_city, add_new_organization
Основной код программы где я добавляю объекты типа Tk(), Frame, ListBox, Button.
и запускаю mainloop().

Так вот, у меня проблема возникла в следующем. При запуске приложения в левую часть приложения из базы через глобальную переменную загружается список пользователей. Но когда добавляю нового человека, я не понял как потом передать в список MemberListBox на главном окне добавленного участника. Поэтому я пока реализовал это через передачу в метод add_new_member ссылки на объект MemberListBox, чтобы после записи нового участника в БД, вызвать метод load_user, а потом load_user_to_listbox(MemberListBox). Но мне кажется что такой подход какой-то неправильный. Я искал примеры реализации паттерна MVP на ткинтере, но по большей частью или ссылки были битые, или примеры слишком сложные для меня и без комментариев. Может кто подскажет в какую сторону искать или как лучше писать GUI приложение на питоне.
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Shroud228
На питоне gui приложения вообще писать не надо. Хочется просто: c# Windows forms. Хочется сложно - c# wpf
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы