2010-08-06 77 views
0

wxWidgets项目在Linux中使用GTK,我的基于wxPython的应用程序和基本组件产生了很多警告和错误,我作为python编码器/最终用户并没有太多关于它的事情。如何从wxWidgets/wxPython应用程序中抑制Gtk警告?

这些错误会分散我的标准流,对我的程序并不致命。在我的情况下通常的是:

(python2.6:9886): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -4 and height 13 
(python2.6:9886): Gtk-CRITICAL **: gtk_widget_is_ancestor: assertion `ancestor != NULL' failed 

它是如此糟糕的做法,以抑制这种类型的第三方错误从我的部分?这是如何完成的?

回答

0

只需将stderr重定向到别的地方。

import sys 
sys.stderr = open("some path") 

或者您可以使用不执行任何操作的Write方法重定向到一个类。

+0

它没有完成这项工作。我尝试在'wx.App'之前重定向,并且尝试在我的'wx.Frame'的'__init__'中重定向,但无济于事。 – progo 2010-08-06 22:10:13

+0

嗯......必须重定向到wx的C++部分,而不是Python部分。尝试将一行删除到官方的wxPython邮件列表。他们会有想法。 – 2010-08-09 16:29:49

0

它不是来自wxPython--它来自GTK本身。您可以在创建控件时通过确保正值(或“-1”代替“any”)来修正第一个值。

我不太确定第二个 - 你能找出什么小工具/事件触发它吗? 我在打印时遇到了一个错误,那是因为没有正确设置CUPS。

+0

每当我在wx.Notebook中切换标签页时,第二个错误会发生两次垃圾邮件。但也有其他情况。我非常感谢你对GTK工作的了解,但我不确定我是否想继续享受GTK的神,而不是专注于python – progo 2010-08-09 07:23:58

+0

那么你创建一个宽度为-4的控件的事实表明你是做*某事*错误;)。啊......笔记本电脑 - 你确定你的笔记本电脑的孩子有正确的父母吗?你不能禁止它们 - 例如,从命令行打开Nautilus经常显示GTK警告 - 但是它们不是从程序生成的,比如说。 – 2010-08-09 12:25:21