PySide2 Qthread 崩溃

2023-12-14

由于 Qtcore.Signal,我想使用 PySide2 Qtcore.Qthread,但最终出现此错误: 进程已完成,退出代码为-1073740791

from PySide2.QtCore import QThread


class Thread(QThread):
    def run(self):
        print('task started')
        k = 0
        for i in range(10000):
            for j in range(5000):
                k += 1
        print('task finished')

Thread().start()

期望有这些打印但我有这个错误:

进程已完成,退出代码为-1073740791

Update:

那么,为什么这段代码也会抛出同样的错误呢?

class Thread(QThread):
    done = Signal()

    def __init__(self):
        super(Thread, self).__init__()

    def run(self):
        print('task started')
        k = 0
        for i in range(10000):
            for j in range(5000):
                k += 1
        print('task finished')
        self.done.emit()

class Widget(QtWidgets.QWidget):
    def __init__(self):
        super(Widget, self).__init__()
        btn = QtWidgets.QPushButton('test', parent=self)
        btn.clicked.connect(self.clicked)
        btn.show()

    def clicked(self):
        t = Thread()
        t.done.connect(self.done)
        t.start()

    def done(self):
        print('done')

app = QtWidgets.QApplication()
window = Widget()
window.show()
sys.exit(app.exec_())

解释

如果您在 CMD/终端中运行代码,您将收到以下错误:

QThread: Destroyed while thread is still running
Aborted (core dumped)

导致错误的原因是线程仍在运行时被销毁,因为它是局部变量,另一方面 QThread 需要事件循环才能运行

Solution

import sys
from PySide2.QtCore import QCoreApplication, QThread


class Thread(QThread):
    def run(self):
        print("task started")
        k = 0
        for i in range(10000):
            for j in range(5000):
                k += 1
        print("task finished")


if __name__ == "__main__":
    # create event loop
    app = QCoreApplication(sys.argv)

    th = Thread()
    th.start()

    th.finished.connect(QCoreApplication.quit)
    sys.exit(app.exec_())

Update:

“t”是一个局部变量,在执行 clicked 后将被消除,导致与初始代码相同的问题,解决方案是防止它立即被销毁,为此有 2 个选项:

  • 创建“t”类属性
def clicked(self):
    self.t = Thread()
    self.t.done.connect(self.done)
    self.t.start()
  • 将QThread存储在生命周期较长的容器中:
class Widget(QtWidgets.QWidget):
    def __init__(self):
        super(Widget, self).__init__()
        btn = QtWidgets.QPushButton('test', parent=self)
        btn.clicked.connect(self.clicked)

        self.container = []

    def clicked(self):
        t = Thread()
        t.done.connect(self.done)
        t.start()
        self.container.append(t)

    # ...
  • 将其作为父级传递给“self”,但为此,线程必须允许接收,因此您必须在构造函数中实现它:
class Thread(QThread):
    done = Signal()

    def __init__(self, parent=None):
        super(Thread, self).__init__(parent)

    # ...
def clicked(self):
    t = Thread(self)
    t.done.connect(self.done)
    t.start()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySide2 Qthread 崩溃 的相关文章

  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • “char”/“character”类型的类型提示

    char 或 character 没有内置的原始类型 因此显然必须使用长度为 1 的字符串 但是为了暗示这一点并暗示它应该被视为一个字符 如何通过类型提示来实现这一点 grade chr A 一种方法可能是使用内置的 chr 函数来表示这一
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • 如何使用Python的super()来更新父值?

    我对继承很陌生 之前所有关于继承和 Python 的 super 函数的讨论都有点超出我的理解 我当前使用以下代码来更新父对象的值 usr bin env python test py class Master object mydata
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • 如何在与应用程序初始化文件不同的文件中迭代 api 路由

    我有一个 apiroutes py 文件 其中定义了许多路由 例如 api route api read methods GET api route api write methods POST 其中 api 是导入 from import
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 为什么实现 __iter__ 的对象不被识别为可迭代的?

    假设您使用包装对象 class IterOrNotIter def init self self f open tmp toto txt def getattr self item try return self getattribute
  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如

随机推荐

  • 在 C++ 中使用循环创建顺序变量名称

    我正在尝试使用循环创建变量名 具体来说 我正在使用这个结构 struct card string rank string suit 这是我代码的其余部分 其中写着 card i 的地方就是我需要它写 card1 或 card2 等的地方 s
  • 更改 MVC 应用程序中的输出目录

    在设置不同的输出文件夹而不是默认的 Bin 文件夹后 我的 MVC 应用程序出现问题 我还删除了 bin 文件夹 这导致在应用程序运行时出现 Global asax 文件异常 无法加载类型 Global Mvc 应用程序 我正在尝试删除所有
  • 单个node.js http服务器接受多个主机名上的连接

    是否可以在node js中创建单个http服务器来接受多个主机名上的连接 例如 我有多个子域 x1 domain com x2 domain com xn domain com 绑定到一个 IP 地址 并且我希望 node js 程序仅接受
  • WPF 绑定图像源

    也许是个愚蠢的问题 但我不知道了 我有这样的 ViewModel 类 public class MainWindowsViewModel INotifyPropertyChanged private ImageSource img publ
  • 使用西里尔字母时出现 UnicodeDecodeError

    我有一个仅包含的模块 这只是示例 问题出在更大的模块中 coding utf 8 执行时我得到 File C Program Files JetBrains PyCharm 107 130 helpers pydev pydevd py l
  • 在 Windows 上安装 dm-types。 (Win7 x64)

    我正在尝试在我的机器上安装 DataMapper 的 dm types gem install dm types 我已经从 RubyInstaller 1 9 3 安装了 Ruby 并且还安装了 DevKit 以及其他一些宝石 如 sina
  • 如何使用 d3 和 geojson 路径数据缩放地图以适合我的 svg 大小

    我正在尝试创建一个 d3 SVG 来绘制纽约州地图并对其进行缩放 以使其适合我的 SVG 大小 我遇到的问题是 当我使用 fitSize height width mapObject 它只返回一个NaN控制台中出现错误 the 纽约州的 t
  • 指针作为伪参数

    我对下面的程序有点困惑 module test implicit none type TestType integer i end type contains subroutine foo test type TestType intent
  • 目前哪些浏览器支持 JavaScript 的“let”关键字?

    我正在开发一个应用程序 不必担心 Internet Explorer 并且正在研究 A 级浏览器中存在的一些 Internet Explorer1 中没有的功能 我想尝试的功能之一是JavaScript let 关键字 我似乎无法让他们的任
  • WooCommerce - 签出不同人自定义状态的条件字段

    我需要修改 woocommerce 网站的结账流程 该过程由人员的状态决定 可能是以下之一 legal entity individual 我需要一个选择器 User status 或单选按钮 就在 billing first name 和
  • 使用 UrlFetch 时抛出“意外错误”[重复]

    这个问题在这里已经有答案了 我已经使用应用程序脚本下载 CM360 报告并将其插入 Google Sheets 一段时间了 但几天后 我在运行代码时收到以下错误 异常 意外错误 https www googleapis com dfarep
  • 将 HTML 标记转换为 RTF 文档

    我有一个包含嵌入 HTML 内容的 XML 文档 我正在尝试将其转换为 RTF 输出文件 我将 XML 元素装饰为 li p b 以及其他 HTML 标记 我希望将其转移到生成的 RTF 中 这是目前有效的 以字符串形式获取 XML 标签内
  • Django + React:如何连接它们进行部署?

    我正在运行一个应用程序Django DRF CELERY REDIS ReactJs REDUX JWT 并且我很难连接backend与frontend用于部署 我用过create react app生成 React 代码 和npm run
  • 在 PL/SQL 函数的 EXECUTE IMMEDIATE 中使用 UDT 变量

    我正在使用 Oracle 11g 在 PL SQL 上构建一个函数 我试图在 EXECUTE IMMEDIATE 语句中使用表变量 但它不起作用 如您所见 ERROR at line 1 ORA 00904 CENTER OBJECTS i
  • Java TreeMap 重复键

    我想我可能发现了 Java 中的一个错误 我有一个 TreeMap 其中使用自定义比较器 但是 当我将 键 值 放在已经存在的键上时 它似乎不会覆盖该键 从而创建重复的键 我想我已经验证了这一点 因为我尝试过 System out prin
  • 根据类型参数选择了错误的特征

    我有一个二元特征Resolve pub trait Resolve
  • 如何设置每天早上 8:00 响铃

    我正在尝试设置每天早上 8 00 触发的闹钟 我知道如何创建闹钟 但如何将其设置为每天上午 8 00 启动 am setRepeating 您可以使用日历并将其设置为您想要的适当时间 那么你会做cal getTimeInMillis 并将其
  • 隐藏透明标题下的滚动内容

    好吧 我已经疯狂地寻找答案了 这很简单 我知道 我的页面顶部有一个固定的透明标题 当我滚动时 我希望正文内容在其下方滚动 但不能通过标题 div 看到 我看过类似的帖子 但对我的案子没有任何帮助 感谢任何可能有帮助的提示或线索 谢谢 下面的
  • 安装face_recognition时出错 错误文本:收集face_recognition

    我想在 python 上启动人脸识别项目 我安装了 bython 并安装了 pipelinev 此后 当我安装 pipenv installface recognition shell 时 在安装后会出现错误 黑色先生 PGk31eo C
  • PySide2 Qthread 崩溃

    由于 Qtcore Signal 我想使用 PySide2 Qtcore Qthread 但最终出现此错误 进程已完成 退出代码为 1073740791 from PySide2 QtCore import QThread class Th