Language/Python

[pywebview] pystray를 이용한 hide/show 제어

TechNote.kr 2021. 9. 12. 12:56
728x90

pystray 로 Windows tray 를 이용하여 program을 제어할 수 있다. 
(pytray 아니고 pystray)

pystray · PyPI

 

[pystray 를 이용해 tray에서 Hide, Show, Quit 기능 추가]

import pystray
from pystray import MenuItem
from pystray import Menu
...
    image_path = Image.open(base_path + '/res/tray_icon.png')
    menu = Menu(MenuItem('Hide', lambda: send_cmd_to_window(parent_pipe, 'hide')),
                MenuItem('Show', lambda: send_cmd_to_window(parent_pipe, 'show')),
                MenuItem('Quit', lambda: quit_window(subprocess_handler)))
    icon = pystray.Icon('pyWebView_Sample', image_path, 'pyWebView', menu)
    icon.run()

 

[pywebview] subprocess 를 이용한 pywebview 분리 실행 (technote.kr)

별도의 process 로 pywebview 를 실행시 분리한 상황이라 pipe 를 통해 cmd를 전달한다.

def send_cmd_to_window(parent_pipe, cmd):
    parent_pipe.send(cmd)
def cmd_recv(child_pipe):
    while True:
        cmd = child_pipe.recv()
        if cmd == 'show':
            webview.windows[0].show()
        elif cmd == 'hide':
            webview.windows[0].hide()

pywebview 가 실행 중인 process에서는 pipe를 통해 cmd가 전달되면 해당 cmd에 맞게 기능을 수행한다. 

webview.windows[0] 을 통해 pywebview의 window handler를 hide 하거나 show 한다. 
(Hide / show window | pywebview (flowrl.com))

 

[실제 구현 코드]

Control pywebview show/hide via pystray · TechNoteGit/pywebview_example@3a35562 (github.com)

728x90