使用raw_input会导致PyQt页面加载出现问题

时间:2015-06-18 21:27:40

标签: python pyqt4 stdin raw-input qwebpage

我使用PyQt4将凭据输入域登录页面,并从域中的其他几个页面提取数据。在代码中提供登录或搜索凭据时,一切都与预期完全一致。当我打开raw_input以允许用户输入信息时,它会导致尝试下载其中一个网页的挂起。我无法提供有关页面本身的信息,因为它位于公司网络上,但仅使用raw_input会导致QWebpage加载出现问题并不合理。

QNetworkManager抛出预期的3或4个完成信号中的1个,并且QWebpage帧从不抛出.loadfinished信号,因此它只是挂起。

(我试图刷新stdin以及seek(0),这会给我一个错误的文件描述符错误)。有没有人遇到过这样的问题?

1 个答案:

答案 0 :(得分:1)

raw_input使用同步/阻塞IO而不让Qt有机会继续在后台处理事件。 Qt并没有准备好以这种方式停止处理。理论上它应该在raw_input完成时恢复。但也许在此期间发生了超时或类似的事情。使用Qt时,你真的应该使用基于信号/事件的输入。

如果GUI交互没问题,你应该尝试QInputDialog :: getText,因为它看起来像是来自外部的阻塞调用,但内部让Qt继续处理后台作业。