Я создал приложение с двумя окнами с Glade и pygobject.У меня есть окно с кнопкой открытия окна, которое открывает второе окно.Второе окно имеет кнопку закрытия.Когда я нажимаю кнопку закрытия, она что-то печатает на терминал и запускает функцию «.hide_on_delete ()», которая закрывает второе окно.
Когда я снова нажимаю кнопку открытия окна, открывается окноснова с простым ".show ()".И я могу делать это так часто, как захочу.
Однако есть проблема, когда я закрываю второе окно с "x" в правом верхнем углу вместо с помощью кнопки закрытия, которую я создал.На поляне я установил событие «уничтожить» и дал ему правильное имя функции.Когда я закрываю второе окно через «x», оно даже печатает «Нажал на кнопку X» и закрывает второе окно.Но когда я снова открываю его, я просто получаю черный квадрат без оформления окна, и когда я нажимаю на него, я получаю это сообщение об ошибке:
(main.py:11083): Gtk-CRITICAL **: 21:37:50.904: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.905: gtk_widget_translate_coordinates: assertion 'GTK_IS_WIDGET (dest_widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.905: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.905: gtk_widget_translate_coordinates: assertion 'GTK_IS_WIDGET (dest_widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.905: gtk_widget_get_settings: assertion 'GTK_IS_WIDGET (widget)' failed
/usr/lib/python3.6/site-packages/gi/overrides/Gtk.py:1612: Warning: g_object_get: assertion 'G_IS_OBJECT (object)' failed
return _Gtk_main(*args, **kwargs)
(main.py:11083): Gtk-CRITICAL **: 21:37:50.905: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.905: gtk_widget_translate_coordinates: assertion 'GTK_IS_WIDGET (dest_widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.977: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.977: gtk_widget_translate_coordinates: assertion 'GTK_IS_WIDGET (dest_widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.977: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
(main.py:11083): Gtk-CRITICAL **: 21:37:50.977: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
Вот мои функции:
def on_second_window_destroy(self, *args):
print("x Button clicked")
app.builder.get_object("second_window").hide_on_delete()
def on_new_window_button_clicked(self, *args):
app.builder.get_object("second_window").show()
def on_close_button_clicked(self, *args):
print("close Button clicked")
app.builder.get_object("second_window").hide_on_delete()
Кнопка закрытия и кнопка "x" запускают точно такую же функцию.Почему один позволяет мне снова открыть окно, а другой нет?Я действительно не понимаю, в чем дело.
Большое спасибо заранее за любую помощь!