首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从一个窗口启动一个操作,并在pywebview/eel中的另一个窗口执行操作?

如何从一个窗口启动一个操作,并在pywebview/eel中的另一个窗口执行操作?
EN

Stack Overflow用户
提问于 2021-02-01 10:27:27
回答 1查看 442关注 0票数 0

所以,我一次打开了pywebview的窗口。现在从窗口1,我想点击一个按钮,并显示一些文本在窗口2。他们之间如何沟通?我正在考虑使用烧瓶-套接字或任何基于插座的解决方案。但这看起来太过分了,对吧?如何才能轻易做到这一点?

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

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-05 04:31:13

最后,我不得不采用艰难的方式(虽然很简单),即套接字。我使用flask-socketio来实现这个特性。下面是一个示例:

假设我有2 separate windows、Window_1和Window_2,现在在Window_1中有一个按钮,在那里我将单击一个按钮,弹出的按钮将显示在Window_2中。

Window_1.html

代码语言:javascript
复制
<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

代码语言:javascript
复制
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

代码语言:javascript
复制
<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等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65990985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档