code: def _form_submit_button(
      self,
      label: str = "Submit",
      help: str | None = None,
      on_click: WidgetCallback | None = None,
      args: WidgetArgs | None = None,
      kwargs: WidgetKwargs | None = None,
      *,  # keyword-only arguments:
      type: Literal["primary", "secondary"] = "secondary",
      disabled: bool = False,
      use_container_width: bool = False,
      ctx: ScriptRunContext | None = None,
  ) -> bool:
      form_id = current_form_id(self.dg)
      submit_button_key = f"FormSubmitter:{form_id}-{label}"
      return self.dg._button(
          label=label,
          key=submit_button_key,
          help=help,
          is_form_submitter=True,
          on_click=on_click,
          args=args,
          kwargs=kwargs,
          type=type,
          disabled=disabled,
          use_container_width=use_container_width,
          ctx=ctx,
      )
  
imports: from __future__ import annotations
  import textwrap
  from typing import TYPE_CHECKING, NamedTuple, cast
  from typing_extensions import Literal
  from streamlit import runtime
  from streamlit.errors import StreamlitAPIException
  from streamlit.proto import Block_pb2
  from streamlit.runtime.metrics_util import gather_metrics
  from streamlit.runtime.scriptrunner import ScriptRunContext, get_script_run_ctx
  from streamlit.runtime.scriptrunner.script_run_context import dg_stack
  from streamlit.runtime.state import WidgetArgs, WidgetCallback, WidgetKwargs
label_desc: Use image node_id 3 for calling the FormMixin obj's underlying member method code with example usage: obj._form_submit_button(label, help, on_click, args, kwargs) and returns: self