Окно GTK не содержит никаких виджетов (пустых) при повторном открытии, возвращает пустое окно - PullRequest
0 голосов
/ 26 октября 2018

Я прилагаю фрагмент кода ниже. Я определяю сигнал здесь, чтобы открыть текстовый файл, используя диалог выбора файла. Выбранный файл отображается в новом окне, используя текстовое представление. Я использую Glade, GTK и Python. Все виджеты импортируются из файла Glade, кроме диалогового окна выбора файлов. Моя проблема заключается в том, что я не могу открыть текстовый файл во второй раз при закрытии с помощью крестообразной кнопки окна. Все, что я вижу, - пустое окно. Я подключил событие уничтожения окна, чтобы выполнить функцию скрытия. Я обнаружил, что у кнопки креста на стекле было событие уничтожения по умолчанию, и как мне его изменить?

def on_open_activate(self,gtkobj,data=None):
        print("opening")
        textbuffer = textview3.get_buffer()
        dialog = gtk.FileChooserDialog("Save file", None,
                                   gtk.FILE_CHOOSER_ACTION_OPEN,
                                   (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                    gtk.STOCK_OPEN, gtk.RESPONSE_OK))

        filter_text = gtk.FileFilter()
        filter_text.set_name("Text files")
        filter_text.add_mime_type("text/plain")
        dialog.add_filter(filter_text)

        response = dialog.run()
        if response == gtk.RESPONSE_OK:
            selected_file = dialog.get_filename()
            with open(selected_file, 'r') as f:
                data = f.read()
                print(data)
                textbuffer.set_text(data)
                textview3.show_all()
                self.window3.set_title(selected_file)
                self.window3.show_all()

        elif response == gtk.RESPONSE_CANCEL:
            dialog.destroy()

        dialog.destroy()

def gtk_widget_hide(self,gtkobj,data=None):
    self.window3.hide()
...