编辑表时关闭 PyQt 事件循环

2024-04-16

我正在使用 PyQt 开发 GUI。 GUI 有一个 qListWidget、一个 qTableWidget 和一个用 Mayavi 实现的绘图。该列表指的是绘制的形状(例如圆柱体和圆锥体)。当在列表中选择形状时,我希望将形状的属性加载到表中(从字典变量),并在图中突出显示形状。我的 Mayavi 绘图工作正常。另外,如果编辑表格,我需要重新绘制形状,以反映新的属性值(就像圆柱体,如果半径发生变化)。

因此,当选择列表项时 -> 使用该项目的属性(来自字典变量)更新表,突出显示绘图上的该项目

编辑表格时 -> 更新字典变量并重新绘制项目

问题:当我选择一个列表项并将数据加载到表中时,每次更新单元格时都会触发 qTableWidget ItemChanged 信号,这会触发使用不完整的数据多次重新绘制形状。

当以编程方式更新表时,是否有禁用 GUI 事件循环的典型方法? (我有使用 Excel VBA 的经验,在这种情况下,设置 Application.EnableEvents=False 将防止每次以编程方式更新单元格时触发 WorksheetChange 事件。) 我是否应该有一个“正在进行表更新”变量来防止在更新表时采取操作? 有没有办法一次性更新表格小部件而不是逐项更新? (我承认我暂时有意避免使用模型视图框架,因此使用了 qListWIdget 和 qTableWidget)。

有什么建议么?

我是第一次发帖,但却是 StackOverflow 的长期用户,所以我想提前感谢你们是一个如此出色的社区!


blockSignals(bool)旨在抑制QObjects及其子类发出信号,从而防止任何其他对象在槽中接收它们。但这是一个QObject方法。如果您专门试图阻止一个对象发出信号来响应您所做的更改,这可能会触发计算或者在插槽中进行一些其他昂贵的处理,那么这就是您想要的。

但是,如果您的情况是进行重复更改会一遍又一遍地导致昂贵的绘制操作(或在小部件上生成其他昂贵的事件),那么您可以使用以下命令禁用更新:updatesEnabled(bool) http://qt-project.org/doc/qt-4.8/qwidget.html#updatesEnabled-prop。此方法的好处是它会递归地禁用目标小部件的子部件,从而防止它们也被更新。因此,在您再次启用之前,层次结构中的任何内容都不会收到更新。

mainWidget.setUpdatesEnabled(False)
# do a bunch of operations that would trigger expensive events
# like repaints
mainWidget.setUpdatesEnabled(True)

最终,这取决于问题的根源是来自触发信号还是触发小部件事件。阻止信号仍然允许小部件处理其事件,但只是不通知任何其他侦听器。updatesEnabled是包装多个列表/表/树更新的常用方法。之后再次启用时,将执行一次后更新。

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

编辑表时关闭 PyQt 事件循环 的相关文章

  • 使用 pdfkit 和 FastAPI 下载 PDF 文件

    我将使用 FastAPI 创建一个 API 将HTML页面到 PDF 文件 使用pdfkit 但是 它将文件保存到我的本地磁盘 当我在线提供此API后 用户如何将该PDF文件下载到他们的计算机上 from typing import Opt
  • 扭曲多种协议

    我希望为我正在从事的项目学习扭曲 该项目需要服务器响应 HTTP 请求以及通过 TCP 连接的其他协议 Twisted能够同时处理多种协议吗 我想使用 Twisted Web 来帮助处理 HTTP 但同时需要响应其他端口上的 TCP 连接
  • 让 Django 提供可下载文件

    我希望网站上的用户能够下载路径被遮挡的文件 因此无法直接下载它们 例如 我希望 URL 是这样的 http example com download f somefile txt 在服务器上 我知道所有可下载的文件都位于该文件夹中 home
  • Native TF 与 Keras TF 性能比较

    我使用本机和后端张量流创建了完全相同的网络 但在使用多个不同参数进行了多个小时的测试后 仍然无法弄清楚为什么 keras 优于本机张量流并产生更好 稍微但更好 的结果 Keras 是否实现了不同的权重初始化方法 或者执行除 tf train
  • 使用 Python 将列名称与 CSV 文件中的数据对齐

    这是我用来将数据写入 csv 文件的代码 with open temp csv a as fp a csv writer fp delimiter t data faceXpos faceYpos faceHeight faceWidth
  • python:numpy 运行脚本两次

    当我将 numpy 导入到 python 脚本中时 该脚本会执行两次 有人可以告诉我如何阻止这种情况 因为我的脚本中的所有内容都需要两倍的时间 这是一个例子 usr bin python2 from numpy import print t
  • 使用 scipy、python、numpy 进行非线性 e^(-x) 回归

    下面的代码为我提供了一条最佳拟合线的平坦线 而不是沿着 e x 模型的一条适合数据的漂亮曲线 谁能告诉我如何修复下面的代码以使其适合我的数据 import numpy as np import matplotlib pyplot as pl
  • R.scale() 和 sklearn.preprocessing.scale() 之间的区别

    我目前正在将数据分析从 R 转移到 Python 当在 R 中缩放数据集时 我将使用 R scale 根据我的理解 它将执行以下操作 x mean x sd x 为了替换该函数 我尝试使用 sklearn preprocessing sca
  • 使用 python boto3 管理 Route53 中具有多个 IP 的 A 记录

    我的route53中有一条A记录 后面有多个IP 例子 A record dummy xyz com 点IPs 1 1 1 1 2 2 2 2 和 3 3 3 3路由策略 Simple 我使用下面的代码来更新单个 IP 的记录 Change
  • 如何在 Django 中像应用程序一样从配置中注册 Flask 蓝图?

    如何从我的配置中注册 Flask 蓝图 就像 Django 中的应用程序一样 我想在配置文件中定义蓝图 它将自动注册 config py BLUEPRINTS news files 实际上我一直在一个暂定名为的项目中勾勒出类似的东西臀部口袋
  • django-allauth:电子邮件确认

    我已经设置了 django allauth 并在新用户注册时使用电子邮件确认 效果很好 但在确认电子邮件中 我得到 Hello from example com You re receiving this e mail because us
  • NumPy 根据另一个数组中的值对第三个数组中的每个匹配元素求和一个数组

    我有两个 numpy 数组 一个包含值 另一个包含每个值类别 values np array 1 2 3 4 5 6 7 8 9 10 valcats np array 101 301 201 201 102 302 302 202 102
  • 在python中检测按下了哪些键

    我需要知道现在按下的是哪个键 我不想捕获一些特定的按键来触发事件或类似的事情 我想知道现在按下了哪些键并显示它们的列表 我还需要捕获特殊键 如 F1 F12 shift alt home windows 等 基本上是键盘上的所有键 我如何在
  • Python:Factory Boy 生成对象创建时指定长度的列表

    我正在尝试使用 Factoryboy 在创建时指定长度的对象中创建一个列表 我可以创建列表 但由于提供的长度 大小的惰性性质 每次尝试创建具有指定长度的列表都会导致问题 这是我到目前为止所拥有的 class FooFactory facto
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • 如何单独捕获这些异常?

    我正在编写一个与 Quickbooks 交互的 Python 程序 连接到 Quickbooks 时 根据问题的不同 我可能会遇到以下两个常见异常之一 pywintypes com error 2147352567 Exception oc
  • 如何动态选择要在flask中使用的模板目录?

    默认情况下 Flask 使用存储在 template 目录中的模板文件 flaskapp application py templates hello html 有没有办法根据登录的用户动态选择模板目录 这就是我想要的目录结构 flaska
  • Hoare Partitioning算法讲解

    根据许多网站给出的伪代码 我写了这个Hoare分区算法 它采用一个数组 根据给定的主元来分区子数组的开始和结束索引 它工作得很好 但是有人可以解释一下逻辑 它是如何做到这一点的吗 这是代码 def hoare arr start end p
  • 如何通过异常值检测方法在周期性或基于序列的数据上生成脉冲作为异常值以进行实验?

    我想对一些时间序列数据进行一些实验KM https scikit learn org stable auto examples cluster plot cluster iris html sphx glr auto examples cl
  • Pandas 数据框可对多列和要列出的值进行字典

    我有一个数据框 id key a1 1 a2 1 a3 1 a4 2 a5 2 a6 3 我想创建一本字典key作为机器号 并且id列作为列表 like 1 a1 a2 a3 2 a4 a5 3 a6 我可以先使用 groupby 然后再使

随机推荐