2016-10-11 2 views
0

Я переименовал локальную переменную app в мой пример PyQt, и все это перестало работать. Кажется, что по умолчанию используется переменная «app», содержащая обработчик главного окна. Существуют ли какие-либо документы, описывающие другие значения по умолчанию, подобные этому?Где найти список локальных переменных по умолчанию PyQt?

Это работает:

if __name__ == '__main__': 
    app = style.init() 
    main = Main() 
    sys.exit(app.exec_()) 

Это не работает:

if __name__ == '__main__': 
    style.init() 
    main = Main() 
    sys.exit(app.exec_()) 
+0

Я добавил общий ответ на ваш вопрос ниже - но для более конкретной помощи вам нужно будет опубликовать свой код! – mfitzp

+0

Спасибо, Мартин! Код становится слишком большим для публикации. Я сделал grep для записи «app», и ее можно найти только один раз. Я считаю, что за моей проблемой может быть какая-то «мусорная сборка»/«ранний деструктор». – dataved

+0

Ох. Последняя строка :-) – dataved

ответ

0

Там нет такого понятия, как «по умолчанию локальная переменная» в Python, вы можете назвать что-нибудь, как вам нравится. Проблема, скорее всего, вызвана тем, что эта переменная app определена/использована в другом месте вашего кода. Теперь вы изменили имя, уже неясно, к чему относится app (или ваше новое имя).

Вы можете увидеть это в вашем втором примере кода:

if __name__ == '__main__': 
    style.init() 
    main = Main() 
    sys.exit(app.exec_()) 

Здесь вы все еще зову exec_() на app объект, который (так как вы удалили присвоение app от style.init()) теперь уже не существует).