Если вы делаете это внутри кнопки, вы должны разгрузить управление var
к модулю, который вы импортируете. Пусть модуль обрабатывает экземпляр, а кнопка позволяет модулю выполнять тяжелый подъем. Неправильный импорт не повреждает, пока импорт не имеет побочных эффектов (чего не должно быть, если вы делаете это правильно).
Модуль делает что-то вроде этого:
class SampleGui(object):
# all sorts of good stuff here
_sample_gui_instance = None
def get_instance():
_sample_gui_instance = sample_gui_instance or SampleGui()
return _sample_gui_instance
и кнопка просто делает
import SampleGuiModule
SampleGuiModule.get_instance().toggleUI()
Это та же проверка, как те, в чей-нибудь ответ, но я думаю, делегируя управление экземпляра к модулю, а не к кнопке, вы можете выполнить любой уровень сложности или инициализации и поделиться ею между кнопками, горячими клавишами или другими сценариями прозрачно.
Я сохранил несколько символов, используя or
вместо if... is None
; это будет сложно по какой-то причине SampleGui
тесты истинности как ложные. Но это сделает только это, если вы сделаете это за собой.
возможно полезно: maya callbacks cheat sheet
Вы имеете в виду вы получаете 'NameError' e xception? –