2010-08-06 76 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