执行Python代码时自动打开浏览器

时间:2019-01-17 11:52:00

标签: python flask localhost python-multithreading

我正在Python / Flask中实现GUI。 设计烧瓶的方式中,必须“手动”打开本地主机以及端口号。

是否有一种自动化的方法,以便在运行代码时自动打开浏览器(本地主机)?

我尝试使用webbrowser软件包,但是在会话被终止后它会打开网页。

我还查看了以下帖子,但它们笼罩着我。

Shell script opening flask powered webpage opens two windows

python webbrowser.open(url)

基于用户输入呈现html页面时,会出现问题。

谢谢。

import webbrowser

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    webbrowser.open_new('http://127.0.0.1:2000/')
    app.run(port=2000)

2 个答案:

答案 0 :(得分:5)

使用计时器启动新线程以打开Web浏览器。

import webbrowser
from threading import Timer

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

def open_browser():
      webbrowser.open_new('http://127.0.0.1:2000/')

if __name__ == "__main__":
      Timer(1, open_browser).start();
      app.run(port=2000)

答案 1 :(得分:0)

我建议进行以下改进,以允许在调试模式下加载浏览器:
this answer的启发,只会在首次运行时加载浏览器...

def main():
    
    # The reloader has not yet run - open the browser
    if not os.environ.get("WERKZEUG_RUN_MAIN"):
        webbrowser.open_new('http://127.0.0.1:2000/')

    # Otherwise, continue as normal
    app.run(host="127.0.0.1", port=2000)

if __name__ == '__main__':
    main()

https://stackoverflow.com/a/9476701/10521959