使用 PyQt5 将 qDebug 输出重定向到文件

2024-03-03

我使用 python2.7、Qt5.5 和 PyQt5 实现了一个应用程序。我使用Python记录器工作logging-模块:日志消息都发送到 stderr 和日志文件。

但是,Qt 日志消息仅出现在 stderr 中,我找不到将它们重定向到文件的方法。

为了缩小问题范围,我尝试了以下方法:

>>> from PyQt5.QtCore import qDebug
>>> import sys
>>> sys.stderr = open("stderr.txt", 'w')
>>> qDebug('test message')
test message
>>> sys.stderr.close()
>>> # stderr.txt is empty

Note:纯 Qt 方式似乎正在操纵QDebug对象,但我无法在 PyQt5 中找到该类。

问题:我怎样才能拥有qDebug写入文件stderr.txt?


您可以安装一个消息处理程序 http://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler:

import sys
from PyQt5 import QtCore, QtWidgets

def qt_message_handler(mode, context, message):
    if mode == QtCore.QtInfoMsg:
        mode = 'INFO'
    elif mode == QtCore.QtWarningMsg:
        mode = 'WARNING'
    elif mode == QtCore.QtCriticalMsg:
        mode = 'CRITICAL'
    elif mode == QtCore.QtFatalMsg:
        mode = 'FATAL'
    else:
        mode = 'DEBUG'
    print('qt_message_handler: line: %d, func: %s(), file: %s' % (
          context.line, context.function, context.file))
    print('  %s: %s\n' % (mode, message))

QtCore.qInstallMessageHandler(qt_message_handler)

app = QtWidgets.QApplication(sys.argv)

def main():
    QtCore.qDebug('something informative')
    win = QtWidgets.QMainWindow()
    # trigger a Qt debug message
    win.setLayout(QtWidgets.QVBoxLayout())

main()

但请注意:

  • python 代码的上下文属性始终存在,但对于 来自 Qt 的消息,您将需要一个调试版本(或者有QT_MESSAGELOGCONTEXT在发布版本中定义)
  • 因为某些原因,qInfo()目前尚未被 PyQt 封装
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PyQt5 将 qDebug 输出重定向到文件 的相关文章

  • 如何让Python的socket服务器永远运行

    我有这段代码创建了一个简单的Python套接字服务器 但是每次客户端断开连接时它都会关闭 如何让它永远运行 import socket HOST PORT 8000 s socket socket socket AF INET socket
  • 使用 Pillow 和 Numpy 进行图像推导

    I have two images and 我想导出一个只有红色 Hello 的图像 例如 所以我正在运行一个简单的推导python脚本 from PIL import Image import numpy as np root root
  • 向 polls urls.py 添加额外的过滤器会导致测试失败

    按照 djangoproject 的教程 我尝试让 urls py 过滤掉没有选择下面 urlpattern 的民意调查 urlpatterns patterns url r ListView as view queryset Poll o
  • Highcharts 奇怪的分组行为

    我正在使用延迟加载 http www highcharts com stock demo lazy loading加载 OHLC 数据的方法 在服务器端 我使用 Python MySQL 并有 4 个包含 OHLC 数据的表 时间间隔为 5
  • __getitem__、__setitem__ 如何处理切片?

    我正在运行 Python 2 7 10 我需要拦截列表中的更改 我所说的 更改 是指在浅层意义上修改列表的任何内容 如果列表由相同顺序的相同对象组成 则列表不会更改 无论这些对象的状态如何 否则 它会更改 我不需要找出来how列表已经改变
  • 为什么我不能“string”.print()?

    我的理解print 在 Python 和 Ruby 以及其他语言 中 它是字符串 或其他类型 上的方法 因为它的语法非常常用 打印 嗨 works 那么为什么不呢 hi print 在 Python 中或 hi print在红宝石工作 当你
  • 使用Python进行图像识别[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 就是我想识别图像中的字母 可能是 bmp或 jpg 例如 这是一个包含字母 S 的 bmp 图像 我想做的是使用Pyth
  • 将分布拟合到直方图

    I want to know the distribution of my data points so first I plotted the histogram of my data My histogram looks like th
  • 如何将一串Python代码编译成一个可以调用函数的模块?

    在 Python 中 我有一串 Python 源代码 其中包含以下函数 mySrc def foo print foo def bar print bar 我想将这个字符串编译成某种形式类似模块的对象这样我就可以调用代码中包含的函数 这是我
  • 直接打开Spyder还是通过Pythonxy打开?

    之前 我一直在运行PythonSpyder 我总是开始Spyder直接双击其图标 今天突然发现我还有一个东西叫Python x y 我注意到我也可以开始Spyder通过它 这两种方法有什么区别吗 如果不是的话 有什么意义Python x y
  • 如何将 pip 指向 Mercurial 分支?

    我正在尝试通过 pip 将我的应用程序安装到 virtualenv 进行测试 安装时效果很好default or tip像这样 pip install e hg https email protected cdn cgi l email p
  • 如何使用 Selenium Webdriver (Python) 在上下文菜单中选择“将图像另存为...”来保存图像

    我正在尝试使用 selenium webdriver 将特定图像保存到目录中 我希望通过模拟右键单击 img 元素并选择 将图像另存为 来实现此目的 使用以下代码我可以打开上下文菜单 但无法选择正确的选项 browser WebDriver
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 无法在 Windows 服务器上使 SVN 预提交脚本失败

    我正在编写一个 SVN pre commit bat 文件 该文件调用 Python 脚本来查询我们的问题跟踪系统 以确定用户提供的问题跟踪 ID 是否处于正确的状态 例如 打开 状态 并与正确的关联项目 SVN 服务器运行 Windows
  • 如何在 Qt simple 上解密/加密某些字符串(例如密码)

    这是我得到的 Qt SDK版本4 6 2 视窗XP 问题 我怎样才能简单地加密和简单地加密QString价值 我需要它能够将一些加密的字符串保存到 INI 文件中 并在重新打开应用程序后将字符串加密为正常的密码字符串值 PS 我正在寻找简单
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • Matplotlib 渲染日期、图像的问题

    我在使用 conda forge 的 Matplotlib v 3 1 3 和 python 3 7 时遇到问题 我拥有 Matplotlib 所需的所有依赖项 当我输入这段代码时 它应该可以工作 我得到了泼溅艺术 它基于此 YouTube
  • 如何有效地计算另一列中每个元素的较大元素的数量?

    我有以下内容df name created utc 0 t1 cqug90j 1430438400 1 t1 cqug90k 1430438400 2 t1 cqug90z 1430438400 3 t1 cqug91c 143043840
  • 使用 Python 进行 Google 搜索网页抓取 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近为了工作中的一些项目 学习了很多python 目前我需要使用谷歌搜索结果进行一些网络抓取 我发现几
  • 使用Python的线程模块调用ctypes函数比使用多处理更快?

    我一生都无法找出这个问题的答案 我编写了一个可以执行数百次繁重计算的脚本 我有一个绝妙的主意 将这些计算任务编写为 C 然后使用 Python 的 ctypes 与它们交互 我心想 我什至可以使用并行性进一步优化它 我最初的方法是使用线程

随机推荐

  • Scala String 与 java.lang.String - 类型推断

    在 REPL 中 我定义了一个函数 请注意返回类型 scala gt def next i List String i map 0 i reverse map 1 next i List String List java lang Stri
  • 泛型:访问新成员,而不是隐藏成员

    我遇到了泛型和新成员的问题 我编写了一个对 ObjectA 类型的对象进行操作的泛型类 ObjectB 派生自ObjectA 并隐藏了ObjectA 的一些成员 当我提供 ObjectB 的类型作为泛型类的类型参数时 我希望当我调用 Obj
  • Javascript fetch 返回 200 但没有数据

    我需要在下拉菜单中显示世界上所有国家 地区 所以我找到了这个api端点端点链接 https restcountries eu rest v1 all 当我在网络浏览器中复制并粘贴此端点链接时 我收到了包含所有数据的响应 国家 当我尝试将其嵌
  • 如何在 Android 中使用应用程序范围的 id 打开 facebook Messenger 聊天窗口

    我可以在我的应用程序中使用 graph api 获取应用程序范围的用户 ID 然后 如何在 android 中使用应用程序范围的 id 打开 facebook Messenger 聊天窗口 我们可以使用 global facebook id
  • 如何获取 Expo 的 assetlinks.json 的 sha256_cert_fingerprints?

    android通用深度链接的说明需要您上传 well known assetlinks json以供验证 Expo 深度链接文档指示您按照官方 Android 文档格式化文件 但该文档假设您正在使用 android studio 来构建您的
  • github 自动将组添加到每个新存储库

    我的组织中存在一个问题 每当创建新存储库时 其中一个组就会自动添加到具有读取权限的该存储库中 即使具有组织所有者权限 也无法将其从那里删除 它指出这是由组织所有者管理的 但在该组或组织设置中都看不到这样的设置 有什么想法如何更改 删除 自动
  • Selenium 中 waitForPageToLoad 的替代方案

    我在页面上有一系列链接 需要不同的时间来加载 我想捕获每个链接所花费的时间 我遇到的问题是 如果超过 waitForPageToLoad 时间 则会导致测试失败 并且我的其余链接没有得到测试 我知道我可以跳过测试中的可疑链接或设置超出预期的
  • JPA 中列表的保存顺序

    我对JPA有以下疑问 我可以保存 java util List 中元素的顺序吗 在我的应用程序中 将元素放入列表中的顺序很重要 但是当我从数据库中获取这些集合后 顺序并不相同 如预期 你能告诉我一种解决这个问题的方法吗 附 我放入集合中的实
  • 计算 DISTINCT 值的出现次数

    我试图找到一个 MySQL 查询 该查询将在特定字段中查找不同的值 计算该值出现的次数 然后按计数对结果进行排序 示例数据库 id name 1 Mark 2 Mike 3 Paul 4 Mike 5 Mike 6 John 7 Mark
  • GAE - 部署错误:“AttributeError:无法设置属性”

    当我尝试部署我的应用程序时 出现以下错误 Starting update of app flyingbat123 version 0 1 Getting current resource limits Password for avigma
  • Prestashop 送货时选择隐藏/显示付款方式

    我试图弄清楚如何在选择送货方式时显示 隐藏付款方式 我尝试了几个解决方案 但它对我不起作用 其中之一是这个
  • 如何在Flutter中像Youtube一样显示之前的时间

    我正在编写一个 flutter 应用程序来克隆一些 Youtube 功能Youtube API V3 该应用程序获取字符串形式的视频时间戳来自 YouTube 视频 API 每个时间戳都具有以下格式 YYYY MM DDTHH MM SSZ
  • 如何计算新点位于 Voronoi 图的哪个位置?

    我写了一个小脚本来显示 voronoi 图M点来自本教程 https docs scipy org doc scipy 0 18 1 reference generated scipy spatial Voronoi html I use
  • 如何获取 Xamarin.Android 的 Mono VM 的堆快照?

    背景 我正在尝试追踪 Xamarin Android 应用程序中的内存泄漏 使用 DDMS 和 Eclipse Memory Profiler 我能够查看哪些对象处于活动状态 当试图跟踪是什么让它们保持活力时 GC Root 我只看到 本机
  • 如何删除前导和尾随空格?

    我在用着awk gsub t t print in txt gt out txt删除前导和尾随空格 问题是输出文件实际上有尾随空格 所有行的长度相同 它们都用空格填充 我缺少什么 UPDATE 1 该问题可能是由于尾随空格不是 正常 空格而
  • Nuxt,转换不适用于子路由(使用 NuxtChild 显示)

    我无法为我的子路线进行转换 我有以下页面 pages child id vue child vue index vue 在索引和任何子路由之间导航都会触发转换 但是当从一个子路由导航到另一子路由时 不会发生转换 注意有静态路由 child和
  • extern 与 c 中变量的全局定义

    我有以下我感兴趣的源代码 include
  • 从 XML 结束标记填充数组

    我正在尝试创建一个字段名称数组 以便稍后在脚本中使用 正则表达式让我大吃一惊 我已经很久没有写代码了 字段名称嵌入在 XML 标记中 因此我想可以从第一行数据的结束标记中提取它们 我看不到如何正确填充数组 任何人都可以为我提供一些启示吗 m
  • 万向节锁是怎么发生的?

    所以我在网上搜索 我在想象如何 发生万向节锁定 根据我所看到的 当两个或多个轴对齐失去一定的自由度时就会发生这种情况 但我无法想象这些轴将如何开始对齐 我的意思是 当我绕 x 轴旋转对象时 例如 y 轴和 z 轴是否不会随 X 轴旋转以保持
  • 使用 PyQt5 将 qDebug 输出重定向到文件

    我使用 python2 7 Qt5 5 和 PyQt5 实现了一个应用程序 我使用Python记录器工作logging 模块 日志消息都发送到 stderr 和日志文件 但是 Qt 日志消息仅出现在 stderr 中 我找不到将它们重定向到