Some small bugs fixed

This commit is contained in:
2025-08-01 21:24:54 +02:00
parent 8b4105a261
commit 5b31da96d4
9 changed files with 66 additions and 17 deletions

View File

@ -1,5 +1,6 @@
import dearpygui.dearpygui as dpg
import logging
import gc
from typing import TYPE_CHECKING
@ -40,9 +41,10 @@ class BaseWidget:
dpg.add_item_resize_handler(
callback=self._on_window_resize, parent=self.window_handler
)
dpg.bind_item_handler_registry(self.window_tag, self.window_handler)
self.create_content()
dpg.bind_item_handler_registry(self.window_tag, self.window_handler)
def create_content(self):
"""Must be implemented by the widget, creates the content of the window"""
@ -65,14 +67,29 @@ class BaseWidget:
# Callbacks
def _on_window_close(self):
try:
dpg.delete_item(self.window_tag)
self.manager.widgets.remove(self)
except ValueError:
pass
self.manager.bus.unsubscribe_instance(self)
print(self.manager.bus.subscribers)
dpg.delete_item(self.window_tag)
dpg.delete_item(self.window_handler)
self.manager.widgets.remove(self)
self.manager = None
self.logger = None
gc.collect()
refs = gc.get_referrers(self)
print(f"Found {len(refs)} objects referring to widget {self}:")
for r in refs:
print(" -", type(r), repr(r))
def _on_window_resize(self, data):
win_w, win_h = dpg.get_item_rect_size(self.window_tag)
self.window_height = win_h
self.window_width = win_w
self.on_resize(win_w, win_h)
def __del__(self):
print("Widget deleted")