2014-02-23 20 views
0

我上excuting行這樣的警告:如何檢測gtkWarnings的來源?

self.builder.add_from_file(self.glade_file) 

GtkWarning: IA__gtk_widget_set_size_request: assertion `GTK_IS_WIDGET (widget)' failed

self.builder.add_from_file(self.glade_file)

GtkWarning: IA__gtk_container_add: assertion `GTK_IS_CONTAINER (container)' failed

self.builder.add_from_file(self.glade_file)

GtkWarning: IA__gdk_window_get_width: assertion `GDK_IS_WINDOW (window)' failed

self.builder.add_from_file(self.glade_file)

GtkWarning: IA__gdk_window_get_height: assertion `GDK_IS_WINDOW (window)' failed

self.builder.add_from_file(self.glade_file)

GtkWarning: IA__gtk_widget_reparent: assertion `widget->parent != NULL' failed

self.builder.add_from_file(self.glade_file)

網絡談論類似他們警告上的所有文章已經錯過了一步,我需要認真對待。

錯誤在哪裏? 我的glade文件包含200多個對象,如何檢測警告的確切對象以糾正它? 哪條線是此警告的來源?

+0

我想這個問題不在構建器文件,但代碼。只是一個預感:你是否在某個時候摧毀了小部件(也許在關閉時摧毀了一個窗口)?你可以顯示爲什麼使用add_from_file()(而不是普通的new_from_file()構造函數)的上下文嗎? – jku

+0

是的,窗戶關閉時會被銷燬。但警告發生在代碼的啓動(更早) – esnadr

+0

我會嘗試new_from_file()。 – esnadr

回答

1

對於C代碼,您需要定義G_DEBUG=fatal-warnings,並使用調試器來檢查是什麼導致了中斷。不知道什麼是pythonic的方式,雖然...

+0

感謝您的提示,我已經嘗試過:gdb run mainwin.py --env G_DEBUG =致命警告沒有任何變化。 – esnadr

+0

那麼,現在應該在第一次警告時放棄,是不是這樣?然後在調用你的程序之前嘗試'export G_DEBUG = fatal-warnings' ... – liberforce

+0

它根本不會中止。 – esnadr