我有简单的python3 + gtk3代码,它连接到dbus并监听所有事件。当用户点击托盘中的图标时,他必须看到所有显示了早期事件的窗口。代码(我不知道在哪里的问题和代码大小> 100行):https://github.com/rakshazi/notify-feed/blob/master/main.py重新打开窗口抛出Gtk-CRITICAL **:gtk_widget_get_window:断言'GTK_IS_WIDGET(widget)'失败
如何重现:
- 运行
python main.py
L117 - 点击托盘的应用程序图标 - 将打开的窗口,如果运行后显示任何通知,它可以是空的或带有一些项目。 L83
- 关闭窗口。 L93
- 重试步骤#2,你会看到空的窗口(不包括在所有情况下的任何元素,是的,这是错误的,但不要紧,这个问题)
单击窗体和应用程序将崩溃:
(gui.py:4882):GTK的CRITICAL **:gtk_widget_get_window:断言 'GTK_IS_WIDGET(插件)' 失败
[1]
4882段故障(核心转储)蟒蛇gui.py
在第一个windowOpen事件和第二个windowOpen事件self.window
对象是<__main__.Window object at 0x7f98b1dcd7e0 (__main__+Window at 0x1502260)>
gdb的结果:
(main.py:17310): Gtk-CRITICAL **: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
Thread 1 "python" received signal SIGSEGV, Segmentation fault.
0x00007fffea5cd0b8 in gtk_widget_translate_coordinates() from /usr/lib/libgtk-3.so.0
请向我解释如何调试和解决这个问题。
PS:我是Python新手,这就是为什么这个问题可能很愚蠢。
非常感谢! – rakshazi