code: def __init__(self, buckets=None):
      super().__init__()
  
      self.images = dict()
  
      self.root = FloatLayout(size=(Window.width, Window.height))
      self.grid = GridLayout(cols=8)
  
      self.add_widget(self.root)
      self.root.add_widget(self.grid)
  
      for i, bucket in enumerate(buckets):
          layout = BoxLayout(orientation="vertical")
  
          image = VisualDebuggerImage(allow_stretch=True)
  
          image.bind(texture=image.update_texture_filters)
  
          self.images[bucket] = image
  
          layout.add_widget(image)
  
          label = Label(
              text=bucket, color=(1, 1, 1, 1), size_hint=(1, 0.1)
          )
  
          layout.add_widget(label)
  
          self.grid.add_widget(layout)
  
      Window.bind(on_resize=self.on_window_resize)
      Window.clearcolor = (0.136, 0.191, 0.25, 1)
  
file_path: SerpentAI/serpent/visual_debugger/visual_debugger_app.py
imports: from serpent.visual_debugger.visual_debugger import VisualDebugger
  from serpent.utilities import SerpentError
  from serpent.config import config
  from PIL import Image
  import io
label_desc: Use image node_id 1 to create a new VisualDebuggerCanvas object from inherited base classes: Widget with example: obj = VisualDebuggerCanvas(buckets)