PyQT 线程的最简单方法

2024-04-15

我在 PyQt 中有一个带有函数的 GUIaddImage(image_path)。很容易想象,当需要将新图像添加到 QListWidget 中时会调用它。为了检测文件夹中的新图像,我使用threading.Thread with watchdog检测文件夹中的文件更改,然后该线程调用addImage直接地。

这会产生警告:QPixmap出于线程安全的原因,不应在 gui 线程之外调用。

使这个线程安全的最好和最简单的方法是什么? Q线程?信号/槽? QMetaObject.invokeMethod?我只需要从线程传递一个字符串到addImage.


您应该使用内置的QThread由 Qt 提供。您可以将文件监控代码放在worker继承自的类QObject这样它就可以使用Qt Signal/Slot系统在线程之间传递消息。

class FileMonitor(QObject):

    image_signal = QtCore.pyqtSignal(str)

    @QtCore.pyqtSlot()
    def monitor_images(self):
        # I'm guessing this is an infinite while loop that monitors files
        while True:
            if file_has_changed:
                self.image_signal.emit('/path/to/image/file.jpg')


class MyWidget(QtGui.QWidget):

    def __init__(self, ...)
        ...
        self.file_monitor = FileMonitor()
        self.thread = QtCore.QThread(self)
        self.file_monitor.image_signal.connect(self.image_callback)
        self.file_monitor.moveToThread(self.thread)
        self.thread.started.connect(self.file_monitor.monitor_images)
        self.thread.start()

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

PyQT 线程的最简单方法 的相关文章

  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • R: is.na() 没有获取 NA 值

    所以我有一个数据集 只需查看它 数据集中就有明显的 NA gt dput bmi cig structure list MSI subset BMI structure c 4L 4L 4L 4L 4L 4L 4L 4L 4L 4L 4L
  • 在类库中添加 System.Web.Script 引用

    我目前正在将代码从 app code 文件夹移动到类库 我已经标记了几种方法 System Web Script Serialization ScriptIgnore 属性 我的类库看不到这个命名空间 我的添加引用对话框看不到此命名空间 如
  • 如何使用 jQuery 验证检查确切的长度?

    使用jQuery 验证插件 http docs jquery com Plugins Validation要验证表单 您如何确认字符串的长度恰好是 X 个字符 由于 当前 没有内置方法 因此您需要添加自己的方法 这会起作用 jQuery v
  • 将nodejs添加到文件前面

    对于 Node js 以类似于以下方式添加到文件的最佳方法是什么 fs appendFile path join dirname app log appendme utf8 就个人而言 最好的方法实际上是围绕异步解决方案来创建日志 我基本上
  • axios默认超时是多少

    我在文档中找到了设置超时值的步骤 const instance axios create baseURL https some domain com api timeout 1000 headers X Custom Header foob
  • 如何使用 sbt 将 Scala 库发布到 Maven Central?

    我有一个使用 SBT 的开源 Scala 项目 我想将我的库发布到 Maven 我该怎么做 我总是忘记如何做到这一点 所以这是我的笔记 一生中一次 Create Sonatype账户 https issues sonatype org se
  • 无法使用 Beautiful Soup 解析 html 表

    我对使用 Beautiful Soup 很陌生 我正在尝试从下面的 url 导入数据作为 pandas 数据框 但是 最终结果具有正确的列名称 但没有行号 我应该做什么呢 这是我的代码 from bs4 import BeautifulSo
  • NorthPolarStereo 的中心经度

    我想绘制北半球的极地立体图 底部为 180 这样我就可以强调太平洋地区 我正在使用 git 的最新 cartopy 并且可以使极地立体图没有问题 但我不知道如何更改图底部的经度 我尝试将经度范围设置为 180 180 但这没有帮助 并且 N
  • 已超出“max_user_connections”资源

    我有一个 MySQL Express Angular NodeJS 应用程序 有时当我登录时 我的节点控制台中会出现以下错误 类型错误 无法读取未定义的属性 查询 错误发生在我的passport local js文件 这是行 connect
  • 部署Java EE应用程序后执行任务

    我有一个 Java EE 应用程序 它应该在部署后启动与外部系统的同步过程 我怎样才能实现这个要求呢 下面列出了在 JavaEE 应用程序中获取生命周期回调的几种流行方法 创建 javax servlet ServletContextLis
  • Java Swing - 将 JLabel 中的图像放置到第二个 JLabel 上/上方(地图、玩家指示器)

    我有一个带有 GridBagLayout 的 JFrame 窗口 有一个带有图标的 JLabel 它是一张地图 现在我需要在地图上方显示另一张图片 玩家位置指示器 可以吗 怎么样 非常感谢 子类化 JLabel 并重写 Paint 方法 p
  • Kubernetes:如何从一个环境变量引用另一个环境变量?

    I ve a Deployment我使用以下方法公开 POD ID 的对象向下API https kubernetes io docs tasks inject data application environment variable e
  • 有没有一个好方法来保存socket.io消息历史记录

    我想记录socket io消息历史记录 即两个用户交谈的内容 以供以后使用 是否有一些socket io内置函数可以实现这一点 或者如果没有 有什么好的方法来实现它 首先 您需要某种方法来识别具有唯一 ID 的用户 该 ID 在用户断开连接
  • Ria 服务将复杂对象作为参数传递给查询域服务方法

    我在使用 WCF RIA 服务时遇到一些困难 类似于中指定的问题这个线程 https stackoverflow com questions 2330085 cant pass collection class as parameter t
  • 在 C#4.0 中从字符串构建 Linq 查询 - 最佳实践

    目前 我正在使用 LinqKit Ms 动态查询示例从字符串动态构建 Linq 表达式 这很好用 LinqKit http www albahari com nutshell linqkit aspx http www albahari c
  • 在 Mac OS 上使用 OpenMP 和 C++11

    我正在尝试在我的 C 11 代码中使用一些 OpenMP 多线程功能 例如 pragma omp parallel for 当我尝试使用以下命令进行编译时 clang std c 11 stdlib libc fopenmp main cp
  • 使用 Django 的 ORM 加速批量插入?

    我计划使用 django 的 ORM 将从约 750 个文件 每个约 250MB 中获取的 10 亿条记录上传到数据库 目前每个文件需要大约 20 分钟来处理 我想知道是否有任何方法可以加速这个过程 我采取了以下措施 使用 transact
  • LINQ 语句比“foreach”循环更快吗?

    我正在编写一个网格渲染管理器 并认为将使用相同着色器的所有网格进行分组 然后在我处于该着色器通道中时渲染它们是一个好主意 我目前正在使用foreach循环 但想知道使用 LINQ 是否可以提高性能 为什么 LINQ 应该更快 它还在内部使用
  • 如何获取 ember 应用程序控制器中模板复选框的值

    我正在尝试查找控制器中是否选中了该复选框 这是我的模板 这是我的控制器 App Ember Application create App ApplicationController Ember Controller extend
  • PyQT 线程的最简单方法

    我在 PyQt 中有一个带有函数的 GUIaddImage image path 很容易想象 当需要将新图像添加到 QListWidget 中时会调用它 为了检测文件夹中的新图像 我使用threading Thread with watch