Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以连续运行QApplication吗?_Python_Python 2.7_Web Scraping_Pyside - Fatal编程技术网

Python 我可以连续运行QApplication吗?

Python 我可以连续运行QApplication吗?,python,python-2.7,web-scraping,pyside,Python,Python 2.7,Web Scraping,Pyside,我正在尝试创建一个类,该类可以获取url列表或单个url并呈现它们 在列表示例中,它呈现所有HTML,并提供一个包含所有HTML的字典。这个很好用 在单一情况下,它接受一个url,呈现它,并使html作为属性可用,然后退出。当我运行它一次时效果很好,但当我尝试它两次或更多次时,它会在调用app.exec_389;()时锁定 我想做的事可能吗?如何修复此代码以便可以多次调用render()?我应该使用基于列表的版本吗 当我尝试列表案例和单个案例时,也会出现同样的问题。我很确定它不喜欢我在quit(

我正在尝试创建一个类,该类可以获取url列表或单个url并呈现它们

在列表示例中,它呈现所有HTML,并提供一个包含所有HTML的字典。这个很好用

在单一情况下,它接受一个url,呈现它,并使html作为属性可用,然后退出。当我运行它一次时效果很好,但当我尝试它两次或更多次时,它会在调用app.exec_389;()时锁定

我想做的事可能吗?如何修复此代码以便可以多次调用render()?我应该使用基于列表的版本吗


当我尝试列表案例和单个案例时,也会出现同样的问题。我很确定它不喜欢我在quit()之后调用exec_uz(),但我还没有找到任何关于这方面的文档。

重新创建或重新使用
QApplication
对象有时会导致问题,具体取决于平台和/或正在使用的PyQt/PySide的特定版本

因此,我修改了示例代码,使其使用本地事件循环,而不是不断退出并重新启动应用程序事件循环。如果页面未加载,此本地循环应在30秒后超时。请注意,原始示例尝试创建控制台应用程序(但使用了错误的语法)。然而,呈现网页需要一个完整的GUI应用程序(事实上,尝试其他方式只会将核心转储到我的系统上)。在ArchLinux(从普通控制台运行)上,使用Python2和Python3以及PySide-1.2.4和PyQt-4.12对代码进行了测试

输出:

$ python2 test.py
loaded: [863822 bytes] http://en.wikipedia.org/wiki/Main_Page
loaded: [1718852 bytes] http://stackoverflow.com/

重新创建或重新使用
QApplication
对象有时会导致问题,具体取决于所使用的平台和/或PyQt/PySide的特定版本

因此,我修改了示例代码,使其使用本地事件循环,而不是不断退出并重新启动应用程序事件循环。如果页面未加载,此本地循环应在30秒后超时。请注意,原始示例尝试创建控制台应用程序(但使用了错误的语法)。然而,呈现网页需要一个完整的GUI应用程序(事实上,尝试其他方式只会将核心转储到我的系统上)。在ArchLinux(从普通控制台运行)上,使用Python2和Python3以及PySide-1.2.4和PyQt-4.12对代码进行了测试

输出:

$ python2 test.py
loaded: [863822 bytes] http://en.wikipedia.org/wiki/Main_Page
loaded: [1718852 bytes] http://stackoverflow.com/

在类的构造函数中,您创建了一个实例并在呈现方法中关闭它,这在第一个url中发生,因此它不会关闭应用程序。@Eylandesc那么,如何在不使用app.quit()的情况下将控制权返回给调用方?您可以共享整个代码,因为我无法复制它。我用列表大小写扩展了代码,但这不会有什么区别。我在调用
r=Renderer()r.render(url1)r.render(url2)
@ekhumaro时遇到了这个错误什么讽刺?我读了那个问题,用了你的答案(即使没有做一些工作它也不起作用),现在我有了一个完全不同的问题。我认为您不理解“复制”一词的含义。在类的构造函数中,您创建了一个实例并在呈现方法中关闭它,这发生在第一个url上,因此它不会关闭应用程序。@eyllanesc那么,我如何在不使用app.quit()的情况下将控制权返回给调用方呢?您可以共享整个代码,因为我无法复制它。我用列表大小写扩展了代码,但这不会有什么区别。我在调用
r=Renderer()r.render(url1)r.render(url2)
@ekhumaro时遇到了这个错误什么讽刺?我读了那个问题,用了你的答案(即使没有做一些工作它也不起作用),现在我有了一个完全不同的问题。我想你不明白“复制品”这个词的意思。
$ python2 test.py
loaded: [863822 bytes] http://en.wikipedia.org/wiki/Main_Page
loaded: [1718852 bytes] http://stackoverflow.com/