#python #share
#python #Поделиться
Вопрос:
У меня есть ноутбук, который %run
является другим ноутбуком в JupyterLab. Они могут вызывать функции друг друга и совместно использовать некоторые глобальные переменные. Теперь я хочу преобразовать записные книжки в файлы py, чтобы их можно было выполнить из командной строки.
Я следую совету, найденному в SO, и импортировал 2-й файл в основной. Однако я обнаружил, что они не могут вызывать функции друг друга. Это серьезная проблема, потому что 2-й файл является сервисом для основного, но он постоянно использует функции, которые являются частью основного.
По сути, вторая программа не имеет графического интерфейса и управляется основной, которая является программой с графическим интерфейсом. Таким образом, всякий раз, когда служебной программе необходимо выполнить печать, она проверяет, установлен ли флаг, сообщающий ей, что она выполняется в режиме GUI, а затем вместо простой печати она вызывает функцию в основной, которая знает, как отобразить ее на экране GUI. Я хочу сохранить это разделение.
Как я могу добиться этого без особых изменений в служебной программе?
Ответ №1:
В итоге я собрал все функции GUI из основной программы GUI и поместил их в 3-й файл в классе, включая соответствующие переменные. В программе с графическим интерфейсом непосредственно перед вызовом программы, отличной от GUI (служебной) Я создал класс и установил все переменные, и в вызове я передал класс. Затем в служебной программе я вызываю функции, которые находятся в классе, и также получаю необходимые переменные из класса. Изменения в служебной программе были незначительными — просто считывание переменных из класса и изменение вызовов функции GUI для вызова функций класса вместо этого.