| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| from tkinter.commondialog import Dialog |
|
|
| __all__ = ["Chooser", "askcolor"] |
|
|
|
|
| class Chooser(Dialog): |
| """Create a dialog for the tk_chooseColor command. |
| |
| Args: |
| master: The master widget for this dialog. If not provided, |
| defaults to options['parent'] (if defined). |
| options: Dictionary of options for the tk_chooseColor call. |
| initialcolor: Specifies the selected color when the |
| dialog is first displayed. This can be a tk color |
| string or a 3-tuple of ints in the range (0, 255) |
| for an RGB triplet. |
| parent: The parent window of the color dialog. The |
| color dialog is displayed on top of this. |
| title: A string for the title of the dialog box. |
| """ |
|
|
| command = "tk_chooseColor" |
|
|
| def _fixoptions(self): |
| """Ensure initialcolor is a tk color string. |
| |
| Convert initialcolor from a RGB triplet to a color string. |
| """ |
| try: |
| color = self.options["initialcolor"] |
| if isinstance(color, tuple): |
| |
| self.options["initialcolor"] = "#%02x%02x%02x" % color |
| except KeyError: |
| pass |
|
|
| def _fixresult(self, widget, result): |
| """Adjust result returned from call to tk_chooseColor. |
| |
| Return both an RGB tuple of ints in the range (0, 255) and the |
| tk color string in the form #rrggbb. |
| """ |
| |
| |
| if not result or not str(result): |
| return None, None |
|
|
| |
| |
| r, g, b = widget.winfo_rgb(result) |
| return (r//256, g//256, b//256), str(result) |
|
|
|
|
| |
| |
|
|
| def askcolor(color=None, **options): |
| """Display dialog window for selection of a color. |
| |
| Convenience wrapper for the Chooser class. Displays the color |
| chooser dialog with color as the initial value. |
| """ |
|
|
| if color: |
| options = options.copy() |
| options["initialcolor"] = color |
|
|
| return Chooser(**options).show() |
|
|
|
|
| |
| |
|
|
| if __name__ == "__main__": |
| print("color", askcolor()) |
|
|