所以,我一次打开了pywebview的窗口。现在从窗口1,我想点击一个按钮,并显示一些文本在窗口2。他们之间如何沟通?我正在考虑使用烧瓶-套接字或任何基于插座的解决方案。但这看起来太过分了,对吧?如何才能轻易做到这一点?
这是在pywebview中打开多个窗口的代码:
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()发布于 2021-06-05 04:31:13
最后,我不得不采用艰难的方式(虽然很简单),即套接字。我使用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 moreWindow_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_2.html (JS is emitting)从window_1.html (JS is receiving)通过Window_2.py (which acts as the messenger in OS level)向Window_2.py (which acts as the messenger in OS level)发送信号。就这样。您可以使用它来构建multi-panel based softwares,如photoshop、AutoCAD、Solidworks等。
https://stackoverflow.com/questions/65990985
复制相似问题