【发布时间】:2021-09-01 20:29:18
【问题描述】:
我有一个控制flask api 的webview。
webview 将有一个按钮来启动flask server 和一个按钮来停止服务器。这就是为什么我必须使用multiprocessing.Process 为Flask 创建一个单独的进程。这样,我就无法再访问我的pywebview.Window。我想使用pywebview.Window 在Flask 进程中使用pywebview.Window.evaluate_js() 评估一些javascript(当然它必须与我在为Flask 打开新进程之前已经创建的pywebview.Window 相同)。
有谁知道如何完成这个问题。我很感激!
一些示例代码:
from flask import Flask, request, jsonify
import os, sys, re, json, socket, sqlite3, base64, requests, webview
from flask_cors import CORS
class ServerFlaskApi:
def __init__(self):
self.app = Flask(__name__, root_path=Root_Dir)
self.app.add_url_rule("/", view_func=self.Default)
def Default(self):
return "Welcome to the Python Http Server for your Application!", 200
def PrintToWebViewConsole(self):
#Trying to use pywebview.Window here, of course WebviewWindow is not defined!!!
WebviewWindow.evaluate_js(js_script)
################
class WebviewApi:
def __init__(self):
self.server_thread = None
def StartServer(self):
self.server_thread = multiprocessing.Process(target=Run_Flask_Server, daemon=True)
self.server_thread.start()
def StopServer(self):
self.server_thread.terminate()
def Run_Flask_Server():
serverApi = ServerFlaskApi()
CORS(serverApi.app)
serverApi.app.run(host=Server_Host, port=Server_Port, debug=True, use_reloader=False)
################
if __name__ == "__main__":
WebViewApi = WebviewApi()
WebviewWindow = webview.create_window(title="Server Monitor", url="view/main-gui.html", js_api=WebViewApi, width=550, height=750, min_size=(550, 750), resizable=False, on_top=True, confirm_close=False)
webview.start(debug=False)
我还是Python 的新手,欢迎提出任何建议!
提前谢谢你!
【问题讨论】:
标签: python-3.x flask webview multiprocessing pywebview