Использование raw_input вызывает проблемы с загрузкой страницы PyQt

Я использую PyQt4 для ввода учетных данных на странице входа в домен и получения данных с нескольких дополнительных страниц в домене. Все работает точно так, как и ожидалось, при вводе учетных данных для входа в систему или поиска из кода. Когда я открываю raw_input, чтобы позволить пользователю вводить информацию, это вызывает зависания, пытающиеся загрузить одну из веб-страниц. Я не могу предоставить информацию о самой странице, потому что она находится в корпоративной сети, но не имеет смысла, что простое использование raw_input вызовет проблемы с загрузками QWebpage.

QNetworkManager выдает 1 из ожидаемых 3 или 4 завершенных сигналов, а кадр QWebpage никогда не выбрасывает сигнал.loadfinished, поэтому он просто зависает.

(Я попытался сбросить стандартный ввод, а также выполнить поиск (0), что приводит к ошибке дескриптора файла). Кто-нибудь сталкивался с такой проблемой раньше?

1 ответ

Решение

raw_input использует синхронный / блокирующий ввод-вывод без предоставления Qt возможности продолжить обработку событий в фоновом режиме. Qt на самом деле не готов к тому, что его обработка будет остановлена ​​таким образом. В теории это должно просто возобновиться, когда raw_input закончится. Но, может быть, в это время произошел тайм-аут или что-то в этом роде. Вы действительно должны использовать входной сигнал / событие при использовании Qt.

Если взаимодействие с графическим интерфейсом в порядке, вы должны попробовать QInputDialog::getText, потому что он выглядит как блокирующий вызов извне, но внутри позволяет Qt продолжать обработку фоновых заданий.

Другие вопросы по тегам