Pycharm 上的 PyQt5,未使用的模块
Posted
技术标签:
【中文标题】Pycharm 上的 PyQt5,未使用的模块【英文标题】:PyQt5 on Pycharm, Modules not used 【发布时间】:2017-06-23 16:29:18 【问题描述】:正在编写 Python 脚本以在网页运行 javascript 后对其进行抓取。我意识到我需要运行 JS,因为使用请求没有返回任何数据。我找到了似乎是我的解决方案here,但我仍然遇到了一些问题。
首先,该教程使用 PyQt4,我已经从项目解释器安装并尝试了多个版本的 PyQt 4 和 5,但仍然找不到解决方案。以下是相关代码:
import PyQt5.QtWebEngineWidgets
import PyQt5.QtCore
import PyQt5.QtWebEngine
import PyQt5.QtWebEngineCore
class Render(QWebpage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _load_finished(self, result):
self.frame = self.mainFrame()
self.app.quit()
QWebpage、QApplication 和 QUrl 调用都有“未解决的引用”错误,四个 PyQt5 导入语句也都有“未使用的导入语句”指示。我已经尝试了几个小时来解决这些问题,多次卸载并重新安装 PyQt 并搜索互联网
任何建议都会很棒,谢谢!
【问题讨论】:
【参考方案1】:您的导入不正确,在 python 中有很多方法可以做到这一点:在您的情况下,您可能是这样的:
1.from package import class
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWebKitWidgets import QWebPage
from PyQt5.QtWidgets import QApplication
# Take this class for granted.Just use result of rendering.
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
url = 'http://pycoders.com/archive/'
r = Render(url)
result = r.frame.tohtml()
print(result)
import package
,那么你应该使用每个元素作为package.class
:
import sys
from PyQt5 import QtWebKitWidgets, QtCore, QtWidgets
class Render(QtWebKitWidgets.QWebPage):
def __init__(self, url):
self.app = QtWidgets.QApplication(sys.argv)
QtWebKitWidgets.QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QtCore.QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
url = 'http://pycoders.com/archive/'
r = Render(url)
result = r.frame.toHtml()
print(result)
如果您使用 pycharm,有一种非常简单的方法可以让 pycharm 为您正确导入包,为此您必须将点放在产生错误的单词上方并执行 Ctrl+M
注意:如果你使用的是 windows,你将无法使用这些模块,因为 Qt 和 PyQt,使用 chromium,它们似乎与 Windows 有问题。
【讨论】:
这是一个很好的答案!感谢您对我的进口的帮助。我是来自 Java 的 Python 新手,所以这对我有很大帮助。还有一个问题,我注意到 QtWebKitWidgets 导入,但是在使用 QWebPage 调用它时出现错误,Pycharm 说它找不到参考。我尝试了 QtWebEngine 和 QtWebEngineCore 来替换它,但我似乎无法修复它。有什么想法吗? 看起来 QWebPage 在 PyQt5 的 5.6 版本中被删除了,我有 v5.8.2 而 Pycharm 只能回到 5.6。我现在正在寻找解决方案,任何建议都会很棒! 我给你看的代码我已经从 pyqt 5.7 的版本开始测试了。 你的操作系统是什么? 如果你使用的是windows,你将无法使用这些模块,因为Qt和PyQt,使用铬,似乎它们与Windows有问题。以上是关于Pycharm 上的 PyQt5,未使用的模块的主要内容,如果未能解决你的问题,请参考以下文章