class_docstr: A widget that displays all images in `fns` along with a `Dropdown`
class_docstr_tok: ["A","widget","that","displays","all","images","in","`","fns","`","along","with","a","`","Dropdown","`"]
docstr: Sets a `thumbnail` and a `Dropdown` menu for each `VBox`
docstr_tok: ["Sets","a","`","thumbnail","`","and","a","`","Dropdown","`","menu","for","each","`","VBox","`"]
code: def set_fns(self, fns: list):  # Contains a path to each image
      "Sets a `thumbnail` and a `Dropdown` menu for each `VBox`"
      self.fns = L(fns)[: self.max_n]
      ims = parallel(
          _open_thumb,
          self.fns,
          h=self.height,
          w=self.width,
          progress=False,
          n_workers=min(len(self.fns) // 10, defaults.cpus),
      )
      self.widget.children = [
          VBox(
              [
                  widget(im, height=f"{self.height}px"),
                  Dropdown(
                      options=self.opts, layout={"width": "max-content"}
                  ),
              ]
          )
          for im in ims
      ]
  
imports: from __future__ import annotations
  from ..torch_basics import *
  from ..data.all import *
  from .core import *
  from fastcore.parallel import *
  from ipywidgets import HBox, VBox, widgets, Button, Checkbox, Dropdown, Layout, Box, Output, Label, FileUpload
label_desc: Use image node_id 2 for calling the ImagesCleaner obj's underlying member method code with example usage: obj.set_fns(fns) without return types