如何从一个 window 发起一个动作并在 pywebview/eel 中的另一个 window 执行动作?

How to initiate an action from one window and perform action in another window in pywebview/eel?

所以,我在pywebview中一次打开了windows。现在从window 1,我想点击一个按钮,在window中显示一些文本。他们之间如何通信?我正在考虑使用 flask-socketio 或任何基于套接字的解决方案。但这似乎有点矫枉过正,是吗?如何轻松实现?

这是在pywebview中打开多个windows的代码:

import webview

if __name__ == '__main__':
    master_window = webview.create_window(title='Window #1', url="<h1>First window</h1>")
    second_window = webview.create_window('Window #2', html='<h1>Second window</h1>')
    webview.start()

好吧,最后,我不得不选择困难的方式(虽然很容易),socket 方式。我使用 flask-socketio 来实现这个功能。这是一个例子:

假设我有 2 separate windows、Window_1 和 Window_2。现在我在 Window_1 中有一个按钮,从那里我将单击一个按钮,然后将在 Window_2.

中显示一个弹出窗口

Window_1.html

<button id="click_me" type="button">Click Me</>
<script>
   // add jquery scripts (use a cdn or download from the source)
   let socket = io.connect('/');
   socket.emit('emit_button_click_signal', {});
</script>

Window_1.py

from flask_socketio import SocketIO

app = Flask(__name__)
socket_io = SocketIO(app, cors_allowed_origins='*')

@socket_io.on('emit_button_click_signal')
def emit_button_click_signal(data):
    emit('emit_button_click_signal_to_window_2', {}, namespace='/', broadcast=True) # refer to flask-socketio basics for more

Window_2.html

<script>
    let socket = io.connect('/');
    socket.on('emit_button_click_signal_to_window_2', function (data) {
            // trigger some jquery to show a pop up in HTML..
        });
</script>

我们从 window_1.html (JS is receiving) 通过 Window_2.py (which acts as the messenger in OS level)window_2.html (JS is emitting) 发送信号。而已。您可以使用它来构建 multi-panel based softwares 像 photoshop、AutoCAD、Solidworks 等