New Demo - color picker using PIL
This commit is contained in:
parent
897033a5ef
commit
ba63fc11b4
|
@ -0,0 +1,68 @@
|
||||||
|
import PySimpleGUI as sg
|
||||||
|
import PIL.ImageGrab
|
||||||
|
|
||||||
|
"""
|
||||||
|
Color Picker Using Mouse
|
||||||
|
|
||||||
|
Move your mouse anywhere on the screen and the window will show you to
|
||||||
|
location of the mouse and a square containing the color being shown.
|
||||||
|
You're also shown the RGB hex value for the color.
|
||||||
|
|
||||||
|
Requires PIL package (and thus only picks colors on primary monitor at the moment)
|
||||||
|
|
||||||
|
You can move the window by grabbing it anywhere and dragging it
|
||||||
|
|
||||||
|
Pressing the F1 key puts the RBG hex value on the clipboard
|
||||||
|
Pressing the F2 key exits
|
||||||
|
Clicking moves the window to that location
|
||||||
|
|
||||||
|
If you accidently do something that causes the window to lose focus (e.g. click the mouse)
|
||||||
|
then the window will move to where your mouse is and force focus back to the window
|
||||||
|
|
||||||
|
As always, there is a right click menu with handy options
|
||||||
|
|
||||||
|
Copyright 2022 PySimpleGUI
|
||||||
|
"""
|
||||||
|
|
||||||
|
layout = [ [sg.Graph((100,100), (0,100), (100,0), key='-GRAPH-')],
|
||||||
|
[sg.T(k='-OUT-')],
|
||||||
|
[sg.T(k='-OUT LOC-')],
|
||||||
|
[sg.T('F1 copy F2 Exit')]]
|
||||||
|
|
||||||
|
window = sg.Window('Color Picker', layout, no_titlebar=True, keep_on_top=True, grab_anywhere=True, right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_VER_EXIT, finalize=True)
|
||||||
|
|
||||||
|
window.bind('<F1>', '-COPY-')
|
||||||
|
window.bind('<F2>', 'Exit')
|
||||||
|
window.bind('<FocusOut>', '-MOVE-')
|
||||||
|
|
||||||
|
while True:
|
||||||
|
event, values = window.read(timeout=30)
|
||||||
|
# print(event, values)
|
||||||
|
if event == sg.WIN_CLOSED or event == 'Exit':
|
||||||
|
sg.popup_quick_message(f'Exiting', background_color='red', text_color='white', keep_on_top=True, font='_ 20', non_blocking=False)
|
||||||
|
|
||||||
|
break
|
||||||
|
if event == 'Edit Me':
|
||||||
|
sp = sg.execute_editor(__file__)
|
||||||
|
elif event == 'Version':
|
||||||
|
sg.popup_scrolled(__file__, sg.get_versions(), keep_on_top=True, location=window.current_location())
|
||||||
|
|
||||||
|
window['-GRAPH-'].erase()
|
||||||
|
x, y = window.mouse_location()
|
||||||
|
rgb = PIL.ImageGrab.grab().load()[x, y]
|
||||||
|
hex_color = sg.rgb(*rgb)
|
||||||
|
window['-OUT-'].update(f'{hex_color}')
|
||||||
|
window['-OUT LOC-'].update(f'{window.mouse_location()}')
|
||||||
|
window['-GRAPH-'].draw_rectangle((0,0), (100,100), hex_color)
|
||||||
|
|
||||||
|
if event == '-COPY-':
|
||||||
|
sg.clipboard_set(hex_color)
|
||||||
|
sg.popup_quick_message(f'{hex_color} copied to clipboard', keep_on_top=True, font='_ 20', non_blocking=True, auto_close_duration=1)
|
||||||
|
elif event == '-MOVE-':
|
||||||
|
window.move(x,y)
|
||||||
|
window.force_focus()
|
||||||
|
|
||||||
|
|
||||||
|
window.close()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue