@Axeles
Нечего тут пока писать

Как вызвать из GUI методы?

Добрый день уважаемые IT спецы. Очень прошу Вас помочь мне с одной проблемой. Я пытаюсь написать простую программу,
смысл которой - это фильрация двух эксель файлов и вывод ошибок встреченных в данных файлах. Это мой второй опыт
программирования, так как для себя я уяснил что программирование необходимо изучать на решении конкретных задачь.
Скажу честно что даётся мне оно не легко, но желание есть. Я понимаю что Вас ужастнёт мой г..код, и что там многое сделано
вовсе не правильно,(хотя QAbstractTableModel я стащил с гитхаб) но я столкнулся с огромной проблемой. Я понимаю что это фундаментальное незнание ООП,
но всё же прошу у Вас помощи. Я написал простую логику с использованием Pandas и скорее всего можно сделать проще и с наименьшим расходом Оперативной памяти,
но улучшать я её буду по мере изучения питона. Программа работает, и всё считает. Но пользоваться могу лишь я ей. Редактировать в файле .py пути к архивам и т.п.
может не каждый. Поэтому я решил сделать графический интерфейс. И вот с этим огромная проблема. Интерфейс готов и немного работает даже. Но я не понимаю как передать
пути к Excel файлам в .py файлы (например ParseExcelOMS) и главное я напрочь не понимаю как запустить файл ParseExcelOMS.py что бы он начал парсить файл.
Как я понял мне придётся создавать какой то метод (функцию) для данной реализации. В общем я окончательно запутался и не знаю что читать уи куда двигаться.

Что в итоге я хочу что бы у меня получилось.
Есть файл 1.xls и 2.xls. В графическом интерфейсе я выбираю один файл и нажимаю Фильтровать (Button_Calculate_OMS). В результате чего должен активироваться
progressBar_OMS сформироваться DataFrame и в Count_Sum_OMS отобразиться количество людей полученных в результате фильтра. Тоже самое и со вторым файлом. Далее
я их просто сравниваю, и результат могу сохранить в Excel или сразу посмотреть. Если запускать файлы по отдельности то всё получается.
Но как это всё вызывать из GUI я не понимаю.

Если Excel файлы так необходимы я постараюсь их изменить и выложить. В оригинале не могу так как они содержат персональные данные пользователей.
https://github.com/AlexeyRepkin77/DispFilter#dispfilter"

Файл ParseExcelOMS.py
https://pastebin.com/6EUMr31t
Файл ParseExcelMIS.py
https://pastebin.com/L6WXsnzC
Файл ParseDublicate.py
https://pastebin.com/Aje5vn9s
Файл Visual.py
https://pastebin.com/GQCV1GDf
Файл General.py
https://pastebin.com/ZeBDPdmm

Графический интерфейс DispFilterGUI.py
https://pastebin.com/b1NxeMpv
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker
Программист, энтузиаст
Мне кажется вы взялись сразу за много задач и пытаетесь решить их одновременно.
Хорошее решение было бы таким:
  1. Оформить основную бизнес-логику как отдельную библиотеку.
  2. Сделать CLI интерфейс для для вашей функциональности. Это будет отдельный скрипт. который с помощью argparse разбирает параметры командной строки, извлекает из них аргументы и запускает бизнес-логику. Возможно уже этого будет достаточно. особенно если можно вынести редко изменяемую конфигурацию в отдельный json или yaml файл и сделать на уровне операционной системы биндинг вашей утилиты в контекстное меню "Открыть с помощью". CLI утилита вполне способна сделать все необходимые преобразования, создать новый документ и открыть его экселем или что там привязано к xls.
  3. Если так уж нужна GUI, то я бы не советовал для вашей задачи делать нативное приложение с окошками и кнопочками. Можно сделать тривиальный веб-сервис на flask с одной единственной веб-формой, которая позволяет загрузить xls-файл с компа и потом скачать закэшированный результат. Также можно отобразить ошибки преобразования сверстав их в html.

Прелесть веб-сервиса в том, что деплой решения будет в контролируемой серверной среде, а не на машине пользователя, где что угодно может пойти не так.
Разработка и поддержка такого решения обходится гораздо дешевле.

Ок. Давайте более по существу.
  1. Содержимое всех ваших модулей с бизнес-логикой (ParseExcelOMS.py, ParseExcelMIS.py и т.д.) выделите в отдельные функции, входными аргументами которых будут имена файлов.
  2. Импортируйте эти модули в модуле с GUI, и там, получив имена файлов, вызывайте нужные функции.

Если не будет получаться - приходите с конкретными вопросами. А-то не понятно что именно вам не понятно. Вроде код у вас слишком сложный для непонимания автором концепции функций.
Ответ написан
Ваш ответ на вопрос

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

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