【问题标题】:How to detect the source of gtkWarnings?如何检测 gtkWarnings 的来源?
【发布时间】:2014-02-24 22:59:09
【问题描述】:

我在执行该行时收到此警告:

self.builder.add_from_file(self.glade_file)

GtkWarning:IA__gtk_widget_set_size_request:断言“GTK_IS_WIDGET(小部件)”失败

self.builder.add_from_file(self.glade_file)

GtkWarning: IA__gtk_container_add: 断言 `GTK_IS_CONTAINER (container)' 失败

self.builder.add_from_file(self.glade_file)

GtkWarning: IA__gdk_window_get_width: 断言 `GDK_IS_WINDOW (window)' 失败

self.builder.add_from_file(self.glade_file)

GtkWarning: IA__gdk_window_get_height: 断言 `GDK_IS_WINDOW (window)' 失败

self.builder.add_from_file(self.glade_file)

GtkWarning:IA__gtk_widget_reparent:断言 `widget->parent != NULL' 失败

self.builder.add_from_file(self.glade_file)

网络上所有谈论类似警告的文章都错过了一步,我非常需要它。

哪里出错了?? 我的林间空地文件包含超过 200 个对象,如何检测警告的确切对象以纠正它? 此警告的来源是哪一行?

【问题讨论】:

  • 我猜问题不在于构建器文件,而在于代码。只是预感:您是否在某个时候破坏了小部件(可能在关闭窗口时破坏了窗口)?你能说明为什么使用 add_from_file() 的上下文(而不是普通的 new_from_file() 构造函数)吗?
  • 是的,窗口在关闭时被破坏。但是警告发生在代码启动时(更早)
  • 我会试试 new_from_file()。
  • 反馈:self.builder.new_from_file(self.glade_file) >>> AttributeError: 'gtk.Builder' object has no attribute 'new_from_file'|||代码的第一行是: > #!/usr/bin/python >import pygtk >pygtk.require('2.0') >import gtk >import gtk.glade
  • 我的评论似乎与旧版 GTK 无关:Builder.new_from_file() 是相当新的。抱歉误导。

标签: python python-2.7 gtk pygtk glade


【解决方案1】:

对于 C 代码,您定义 G_DEBUG=fatal-warnings,并使用调试器检查导致其中断的原因。不知道什么是 pythonic 方式,虽然......

【讨论】:

  • 感谢您的提示,我已尝试:gdb run mainwin.py --env G_DEBUG=fatal-warnings 没有任何更改。
  • 嗯,它现在应该在第一次警告时中止,不是这样吗?然后在调用你的程序之前尝试export G_DEBUG=fatal-warnings...
  • 它根本没有中止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
相关资源
最近更新 更多