python - QObject 实例化上的 PySide 分段错误
问题描述
我有一个类是我其他非 qt 类的基础。此类使用 Signal 实例实例化 QObject 类。不幸的是,有时它会引发分段错误错误。这是我的代码:
class PublisherSignal(QObject):
notify = Signal(list)
class PublisherBase:
def __init__(self, *args, **kwargs):
super(PublisherBase, self).__init__(*args, **kwargs)
self._signal = PublisherSignal()
故障处理程序显示,分段错误发生在PublisherSignal()
类实例化上。并非总是如此。在大多数情况下,它工作正常。不涉及线程。的子类PublisherBase
不是子类化QObject
。
段错误的原因可能是什么?
解决方案
第一:Segmentation fault
对于开发者来说是一个复杂的问题。为了有效地处理它,请使用故障处理程序。它是 Python v.3.x 的一部分,但您可以使用pip在 Python v.2.x 中安装它。但有时您最好使用事件过滤器注册 - 用于跟踪信号事件的小部件。这是鼠标的示例(只是为了看看它的样子):
# IT IS JUST AN EXAMPLE (NOT A SOLUTION)
def eventFilter(self, source, event):
if event.type() == QEvent.MouseButtonPress:
if source == self.txtEditor :
pos=event.pos()
cursor=self.txtEditor.cursorForPosition(pos)
cursor.select(QTextCursor.WordUnderCursor)
txtClicked=cursor.selectedText()
self.testCommand(str(txtClicked))
return QMainWindow.eventFilter(self, source, event)
第二:您可能会使用Python 调试器模块:
python -m pdb yourScript.py
第三:对于涉及的线程(但你说不涉及线程)。
shutdown (exit) can hang or segfault with daemon threads running
推荐阅读
- python - 从加载模块执行功能是锁定还是非阻塞?
- tensorflow.js - Tensorflowjs:loadFrozenModel 是否意味着我无法访问图层?
- python - 获取列表类型数据字段的第一个元素
- php - Transferring large amounts of data from PHP to Android using compressed JSON
- angular - 角子更新父和 ExpressionChangedAfterItHasBeenCheckedError
- css - 直角三角形的css圆角
- c++ - 在收到的单独函数 std::bad_alloc 中将内存动态分配给数组
- c# - 从 LocalDB 切换到 SQL Server DB MVC5
- python - 带有 PhysUtil 程序的 GlowScript 未运行
- php - 我想将 PHP 变量发送到模态,但也需要将它作为一个 php 变量