Использование 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 продолжать обработку фоновых заданий.