Почему GTK4 говорит: «gtk_window_present: утверждение 'GTK_IS_WINDOW (окно)' не удалось» при открытии диалогового окна дPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему GTK4 говорит: «gtk_window_present: утверждение 'GTK_IS_WINDOW (окно)' не удалось» при открытии диалогового окна д

Сообщение Anonymous »

В настоящее время я занимаюсь разработкой графических интерфейсов с использованием Python, GTK4 и libadwaita.
До сих пор мой опыт был довольно хорошим, но теперь я столкнулся с проблемой:
Когда я создаю AdwDialog code>, я могу открыть его один раз, но если я закрою его и попытаюсь открыть снова, я получу следующее сообщение об ошибке:

Код: Выделить всё

(python3:45276): Gtk-CRITICAL **: 09:46:38.651: gtk_window_present: assertion 'GTK_IS_WINDOW (window)' failed
Вот минимальный воспроизводимый пример такого поведения:

Код: Выделить всё

import gi
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')

from gi.repository import Gtk, Adw

class DemoWindow(Gtk.ApplicationWindow):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.set_title("Dialog Example")
self.set_default_size(200, 100)

self.dialog = Adw.Dialog(title="Dialog Example", parent=self)
self.closebtn = Gtk.Button(label="Close")
self.closebtn.connect("clicked", self.on_close_clicked)
self.dialog.set_child(self.closebtn)
button = Gtk.Button(label="Open Dialog")
button.connect("clicked", self.on_button_clicked)
self.set_child(button)

def on_button_clicked(self, button):
self.dialog.present(self.get_root())

def on_close_clicked(self, button):
self.dialog.close()

class DemoApp(Adw.Application):
def __init__(self):
super().__init__(application_id="org.example.demoapp")
self.connect("activate", self.on_activate)

def on_activate(self, app):
self.win = DemoWindow(application=app)
self.win.present()

if __name__ == "__main__":
DemoApp().run()
Что я делаю не так? Очень благодарен за вашу помощь
- Йенс

Подробнее здесь: https://stackoverflow.com/questions/791 ... dow-failed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»