python (3.11.7)

(root)/
lib/
python3.11/
tkinter/
colorchooser.py
       1  # tk common color chooser dialogue
       2  #
       3  # this module provides an interface to the native color dialogue
       4  # available in Tk 4.2 and newer.
       5  #
       6  # written by Fredrik Lundh, May 1997
       7  #
       8  # fixed initialcolor handling in August 1998
       9  #
      10  
      11  
      12  from tkinter.commondialog import Dialog
      13  
      14  __all__ = ["Chooser", "askcolor"]
      15  
      16  
      17  class ESC[4;38;5;81mChooser(ESC[4;38;5;149mDialog):
      18      """Create a dialog for the tk_chooseColor command.
      19  
      20      Args:
      21          master: The master widget for this dialog.  If not provided,
      22              defaults to options['parent'] (if defined).
      23          options: Dictionary of options for the tk_chooseColor call.
      24              initialcolor: Specifies the selected color when the
      25                  dialog is first displayed.  This can be a tk color
      26                  string or a 3-tuple of ints in the range (0, 255)
      27                  for an RGB triplet.
      28              parent: The parent window of the color dialog.  The
      29                  color dialog is displayed on top of this.
      30              title: A string for the title of the dialog box.
      31      """
      32  
      33      command = "tk_chooseColor"
      34  
      35      def _fixoptions(self):
      36          """Ensure initialcolor is a tk color string.
      37  
      38          Convert initialcolor from a RGB triplet to a color string.
      39          """
      40          try:
      41              color = self.options["initialcolor"]
      42              if isinstance(color, tuple):
      43                  # Assume an RGB triplet.
      44                  self.options["initialcolor"] = "#%02x%02x%02x" % color
      45          except KeyError:
      46              pass
      47  
      48      def _fixresult(self, widget, result):
      49          """Adjust result returned from call to tk_chooseColor.
      50  
      51          Return both an RGB tuple of ints in the range (0, 255) and the
      52          tk color string in the form #rrggbb.
      53          """
      54          # Result can be many things: an empty tuple, an empty string, or
      55          # a _tkinter.Tcl_Obj, so this somewhat weird check handles that.
      56          if not result or not str(result):
      57              return None, None  # canceled
      58  
      59          # To simplify application code, the color chooser returns
      60          # an RGB tuple together with the Tk color string.
      61          r, g, b = widget.winfo_rgb(result)
      62          return (r//256, g//256, b//256), str(result)
      63  
      64  
      65  #
      66  # convenience stuff
      67  
      68  def askcolor(color=None, **options):
      69      """Display dialog window for selection of a color.
      70  
      71      Convenience wrapper for the Chooser class.  Displays the color
      72      chooser dialog with color as the initial value.
      73      """
      74  
      75      if color:
      76          options = options.copy()
      77          options["initialcolor"] = color
      78  
      79      return Chooser(**options).show()
      80  
      81  
      82  # --------------------------------------------------------------------
      83  # test stuff
      84  
      85  if __name__ == "__main__":
      86      print("color", askcolor())