如何从一个 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 等
所以,我在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 等