在我的Python2.7+ GTK+3 + PyGI + GUI的Glade3应用程序中,我得到了很多错误,如下所示:
(python.exe:81868): Gdk-CRITICAL **: gdk_device_get_source: assertion 'GDK_IS_DEVICE (device)' failedPython中也没有例外,在程序中没有任何错误。他们似乎是无害的,但为了清洁,我想阻止他们的发生。
我注意到,这发生在例如激活和取消激活菜单项,或更改组合框上的选择时。我尝试设置一个回调,它不会对触发问题的事件产生任何影响,但不会改变。
那么,他们是什么意思?我该怎么阻止他们?
发布于 2014-03-01 18:53:21
这样的消息由使用Glib调试函数的代码发出,参见1,当断言失败时。这些断言由Glib和构建在Glib上的许多组件用来报告无效状态、无效参数等。
通常,这样的消息会提示应用程序中的错误,所以搜索原因是个好主意。为此,请使用适当的值导出G_DEBUG环境,参见2。在您的示例中,您将设置G_DEBUG=fatal-criticals,当发出关键消息时,程序将中止。如果然后在gdb中运行应用程序并在程序终止时打印回溯跟踪,那么您应该了解导致消息发出的原因。请记住为glib和gtk/gdk安装调试器包以获得可用的回溯。
若要禁用发出的消息,如果您无法修复该问题(可能是因为原因不是您的代码,而是一些其他库),您可以查看g_log_set_handler,参见3。
https://stackoverflow.com/questions/22118539
复制相似问题