Многие элементы ответа на заданные здесь вопросы можно найти там (см. Как ответы, так и комментарии, в частности от JK SH).
Подводя итог, значение "основного потока" может быть различным для Qt и для системы, в зависимости от платформы. В linux и windows основной поток для Qt - это просто первый поток, имеющий отношение к Qt (будьте осторожны с импортом во всех других потоках). Это не поток, который запустил process.run (). В OS X ситуация иная, и «основной поток» одинаков как для Qt, так и для процесса. В этом отношении специалисты, похоже, считают эту документацию неточной ...
Итак, предварительные ответы на конкретные вопросы этого поста таковы:
1) Не нарушает ли приведенный выше код какой-либо Правило Qt4, потому что оно запускает QApplication в неосновном потоке?
=> Нет
2) На какой странице документации QT4 говорится, что запрещено обрабатывать, как мы сделали?
=> Нет, потому что "основной поток" никогда не определяется правильно в документации pyQt4
3) Каково определение основного потока процесса? Поток, который выполняет функцию process.run ()?
=> Да
4) Что такое основной поток Qt? По определению это основной поток процесса или это может быть другой поток?
=> Это поток, ссылающийся на первый объект Qt (будьте осторожны с импортом в основной поток процесса). Это не основная нить процесса. Они могут быть разными.
5) Почему у нас нет ошибки "QApplication не был создан в главном потоке"?
=> Поскольку он создан в том, что Qt называет " main thread ", хотя он отличается от того, что процесс называет" main thread ".
6) Как Qt4 распознает, выполняется ли событие l oop в главном потоке процесса?
=> Он просто НЕ работает на windows и linux.
Пожалуйста, исправьте этот ответ, если он содержит какую-либо ошибку.