def draw(self):
        """Draw itself and widgets.

        Extends Object2D.draw.
        """
        ### draw a cached copy of the screen over itself
        draw_cached_screen_state()

        ### draw form background (self.image)
        super().draw()

        ### draw clean panel and draw its items over it (if any)

        panel = self.pack_list_panel
        panel.image.blit(self.panel_bg, (0, 0))

        for pack_objs in self.node_pack_widget_list:

            for obj in pack_objs:
                obj.draw_relative(panel)

        draw_border(panel.image, (235, 235, 235))

        ### draw all widgets
        self.widgets.draw()

        ### update screen
        SERVICES_NS.update_screen()
Draw itself and widgets.

        Extends Object2D.draw.
        
nodezator/editing/nodepacksforms/selection.py