Python 和 GTK3 错误打印到 stderr,它们是什么?

标签 python gtk3 glade

在我用 Glade3 应用程序制作的 Python 2.7 + GTK+3 + PyGI + GUI 中,我遇到了很多这样的错误:

(python.exe:81868): Gdk-CRITICAL **: gdk_device_get_source: assertion 'GDK_IS_DEVICE (device)' failed

Python 中没有发生异常,程序中没有任何行为错误。它们看似无害,但为了清洁,我想阻止它们发生。

我注意到,例如在激活和停用菜单项或更改组合框上的选择时会发生这种情况。我尝试设置一个回调,该回调对触发问题的事件不执行任何操作,但没有任何更改。

那么,它们是什么意思呢?我该如何阻止他们?

最佳答案

当断言失败时,此类消息由使用 Glib 调试功能的代码发出,请参阅 [1]。 Glib 和许多基于 Glib 构建的组件使用这些断言来报告无效状态、无效参数等。

通常,此类消息暗示应用程序中存在错误,因此最好查找原因。为此,请使用适当的值导出 G_DEBUG 环境,请参阅 [2]。在您的情况下,您将设置G_DEBUG=fatal-ritics,并且当发出关键消息时程序将中止。如果您随后在 gdb 中运行应用程序并在程序中止时打印回溯,您应该了解是什么导致了消息的发出。请记住安装 glib 和 gtk/gdk 的 debuginfo 包以获得可用的回溯。

要禁止发出消息,如果您无法解决问题(可能是因为原因不是您的代码,而是其他库),您可以查看g_log_set_handler,参见[3]。

关于Python 和 GTK3 错误打印到 stderr,它们是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22118539/

相关文章:

gtk - 为什么 Gtk.Widget.set_size_request 和 Gtk.Window.set_default_size 导致具有相同值的不同窗口大小?

c++ - Beaglebone 上的 Gtk+ 绑定(bind)(arm linux)

linux - GtkWidget.events 属性(例如)GtkTreeView 小部件的用途是什么?

gtk - 在 GtkBuilder XML 的 GtkDialog 中使用预定义的响应 ID?

python - 如何将现有的 MySQL 数据库导入到 web2py 中?

Python - 任何检查数字 0 或 False 的方法

python - GTK3 ComboBox 显示 TreeStore 中的父项

linux - Glade 和 GTK : which version to choose?

python - Altair 中的垂直多面图表

python - 如何在没有客户端 SSL 证书的情况下在 python gRPC 客户端中打开安全通道