- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题总结在标题中。当我调用方法 setHtml
在 QtWebPageRenderer
的实例上,发出 SIGILL 信号,我的应用程序出现故障。
我知道这个问题是由糟糕的 Qt5 动态库引起的,但我安装了它:
sudo pip install PyQt5 --only-binary PyQt5
sudo pip install PyQtWebEngine --only-binary PyQtWebEngine
--only-binary
的情况下安装 PyQt5 时,我总是以一些奇怪的编译错误结束。像
qmake
不在 PATH 中,但我可以调用
qmake
从壳。
continue
之后在 gdb 中,我得到了 SIGILL。这暗示 Qt 实际上是想对我说些什么,虽然不是很直观。
import signal
import sys
import threading
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5.QtWebEngineWidgets import QWebEnginePage
class WebView(QWebEnginePage):
def __init__(self):
QWebEnginePage.__init__(self)
self.loadFinished.connect(self.on_load_finish)
def print_result(self, data):
print("-" * 30)
print(data)
with open("temp.html", "wb") as hndl:
hndl.write(data.encode("utf-8"))
def on_load_finish(self):
self.toHtml(self.print_result)
class Runner(threading.Thread):
def __init__(self, web_view):
self.web_view = web_view
threading.Thread.__init__(self)
self.daemon = True
def run(self):
self.web_view.load(QtCore.QUrl("https://www.worldometers.info/coronavirus/"))
def main():
signal.signal(signal.SIGINT, signal.SIG_DFL)
app = QtWidgets.QApplication(sys.argv)
web_view = WebView()
runner = Runner(web_view)
runner.start()
app.exec_()
if __name__ == "__main__":
main()
最佳答案
你必须有几个限制:
import signal
import sys
import threading
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5.QtWebEngineWidgets import QWebEnginePage
class WebView(QWebEnginePage):
def __init__(self):
QWebEnginePage.__init__(self)
self.loadFinished.connect(self.on_load_finish)
def print_result(self, data):
print("-" * 30)
print(data)
with open("temp.html", "wb") as hndl:
hndl.write(data.encode("utf-8"))
def on_load_finish(self):
self.toHtml(self.print_result)
class Runner(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.daemon = True
def run(self):
# The QWebEnginePage was created in a new thread and
# that thread has an eventloop
loop = QtCore.QEventLoop()
web_view = WebView()
web_view.load(QtCore.QUrl("https://www.worldometers.info/coronavirus/"))
loop.exec_()
def main():
signal.signal(signal.SIGINT, signal.SIG_DFL)
app = QtWidgets.QApplication(sys.argv)
runner = Runner()
runner.start()
app.exec_()
if __name__ == "__main__":
main()
QThread
和
threading.Thread()
是 native 线程
处理程序 操作系统,所以实际上可以说 QThread 是一个
threading.Thread()
+
QObject
在辅助线程上运行事件循环。
import signal
import sys
import threading
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5.QtWebEngineWidgets import QWebEnginePage
class WebView(QWebEnginePage):
def __init__(self):
QWebEnginePage.__init__(self)
self.loadFinished.connect(self.on_load_finish)
def print_result(self, data):
print("-" * 30)
print(data)
with open("temp.html", "wb") as hndl:
hndl.write(data.encode("utf-8"))
def on_load_finish(self):
self.toHtml(self.print_result)
@QtCore.pyqtSlot(QtCore.QUrl)
def load(self, url):
QWebEnginePage.load(self, url)
class Runner(threading.Thread):
def __init__(self, web_view):
self.web_view = web_view
threading.Thread.__init__(self)
self.daemon = True
def run(self):
url = QtCore.QUrl("https://www.worldometers.info/coronavirus/")
QtCore.QMetaObject.invokeMethod(
self.web_view,
"load",
QtCore.Qt.QueuedConnection,
QtCore.Q_ARG(QtCore.QUrl, url),
)
def main():
signal.signal(signal.SIGINT, signal.SIG_DFL)
app = QtWidgets.QApplication(sys.argv)
web_view = WebView()
runner = Runner(web_view)
runner.start()
app.exec_()
if __name__ == "__main__":
main()
from functools import partial
import signal
import sys
import threading
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5.QtWebEngineWidgets import QWebEnginePage
class WebView(QWebEnginePage):
def __init__(self):
QWebEnginePage.__init__(self)
self.loadFinished.connect(self.on_load_finish)
def print_result(self, data):
print("-" * 30)
print(data)
with open("temp.html", "wb") as hndl:
hndl.write(data.encode("utf-8"))
def on_load_finish(self):
self.toHtml(self.print_result)
class Runner(threading.Thread):
def __init__(self, web_view):
self.web_view = web_view
threading.Thread.__init__(self)
self.daemon = True
def run(self):
wrapper = partial(
self.web_view.load,
QtCore.QUrl("https://www.worldometers.info/coronavirus/"),
)
QtCore.QTimer.singleShot(0, wrapper)
def main():
signal.signal(signal.SIGINT, signal.SIG_DFL)
app = QtWidgets.QApplication(sys.argv)
web_view = WebView()
runner = Runner(web_view)
runner.start()
app.exec_()
if __name__ == "__main__":
main()
关于python - QtWebPageRenderer SIGILL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62330952/
当玩家四处走动时,我的服务器有时会崩溃。我尝试使用调试器运行它,服务器收到错误:程序收到信号 SIGILL,非法指令。 它显示 LogicHandler 中的第 59 行。这是函数运行。这是该函数:
我想使用 Sigil 将字体系列更改为嵌入式字体。我相信我已经在 CSS 中做好了一切。我在 Sigil 中导入了“1984”字体。 我已阅读本教程:http://www.pigsgourdsandw
我正在为我的安全类开发我的缓冲区溢出项目,我认为我已经正确设置了所有内容,但是当我运行它时我得到: Program received signal SIGILL, Illegal Instructio
我正在使用 NDK 和 GCC 将一些 C++ 代码移植到 Android。代码基本上运行。有一次,在 Eclipse 中调试时,调用 Dabbler::Android::Factory* pFact
在我学习 Elixir 的过程中,我正在尝试制作一个简单的符号来解析 csv。 我已经设法制作了一个印记来做到这一点,但是我找不到一种方法让它与特殊字符一起工作,例如 ; . defmodule Co
我的问题总结在标题中。当我调用方法 setHtml在 QtWebPageRenderer 的实例上,发出 SIGILL 信号,我的应用程序出现故障。 我知道这个问题是由糟糕的 Qt5 动态库引起的,但
这些都是有效的指令,直到 0x7fffffffdbe4 ,此时程序已经调用了退出系统调用。 gdb) x/20i $rip => 0x7fffffffdbb0: movabs rax,0x2
我有一个问题,我必须在两个战士之间的战斗中返回获胜者的名字。fighter类如下: class Fighter { private: std::string name; int health; int
我已经得到了答案,所以我只是发布这个,以防其他像我一样糟糕的编码员遇到这个问题。 (虽然有些黑魔法可能有人可以解释)。 我正在 Android 设备(Samsung Galaxy S7,尽管该问题很可
错误信号 4 SIGILL 对我来说是新的。当我查看墓碑文件并输入 int 他的地址时,我得到了 ??即 这是一些墓碑: *** *** *** *** *** *** *** *** *** ***
是否可以将枚举作为参数传递给可变参数函数?我正在尝试执行以下操作: GLenum ShaderManager::initialize() { GLuint program = loadShad
我正在尝试在 BeagleBone Black 上调试程序。在调试器之外,它会产生不正确的结果,但不会产生 SIGILL。它在调试器下也运行正常,没有断点。但是,它会在单步执行时生成带有断点设置的 S
我试图用动态生成的代码做一些讨厌的骇人听闻的事情,我希望操作系统在遇到未知操作码时向我发送一个 SIGILL。这会让我添加一层关于我的程序的元信息等等。 但是,对于我的小测试程序,操作系统似乎没有发送
我正在使用 Linux x86_64 机器来构建我的程序。我已将共享库链接到可执行文件。在我的项目中,我正在调用一个声明 vector 的函数函数内部。当该函数被调用时,我的程序被杀死。下面是通过GD
我正在尝试添加«€»作为«$»标量的别名,我认为使用俚语是这样做的。但是 perl6.doc 根本没有提到俚语。 我已阅读以下内容: https://perlgeek.de/en/article/mu
昨天,我发布了我的应用程序的新版本,今天我发现,很多从旧版本升级的用户都遇到了崩溃。 检查崩溃日志后,我仍然找不到问题所在,所以我来这里寻求帮助。 崩溃日志显示,未知线程崩溃,看起来应用程序尚未完成启
我收到以下代码的奇怪错误: #include #include #include inline static double myfma(double x,double y, double z)
我有一个 NDK 应用程序上市,并获得了关于 SIGILL 信号的 native 崩溃报告。 (我使用 google breakpad 生成 native 崩溃报告。)以下是详细信息: 我的应用是为
在我的应用程序中,我希望能够播放流式视频(通过 RTSP 协议(protocol))。我找到了开放的 RTSP 流:rtsp://red7blue.de/Primetime 并尝试播放它。但是我的应用
我编写了一个在 MIPS 32 位路由器上运行的小型 go 程序。我能够使用 go build 工具链在路由器上运行一个基本的 hello world 程序。 env GOOS=linux GOARC
我是一名优秀的程序员,十分优秀!