最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python結(jié)合PyQt和Flask實現(xiàn)桌面端一鍵啟動/關(guān)閉Web服務(wù)的應(yīng)用

 更新時間:2025年12月07日 09:11:59   作者:weixin_46244623  
本文將以一個完整示例演示如何結(jié)合 PyQt 與 Flask,輕松打造一個桌面應(yīng)用,實現(xiàn)對本地 Web 服務(wù)的一鍵啟動與停止,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

結(jié)合 PyQt 與 Flask,你可以輕松打造一個桌面應(yīng)用,實現(xiàn)對本地 Web 服務(wù)的一鍵啟動與停止。本文將以一個完整示例演示如何做,并詳細講解每個關(guān)鍵步驟,適合希望將可視化界面與后臺 API 服務(wù)整合的開發(fā)者參考。

1. 項目簡介

我們將創(chuàng)建一個簡單的 PyQt5 桌面應(yīng)用,界面有兩個按鈕:“啟動 Flask App”和“停止 Flask App”。點擊按鈕即可在本地后臺啟動或關(guān)閉 Flask Web 服務(wù)(默認監(jiān)聽 127.0.0.1:5000)。

2. 環(huán)境準(zhǔn)備

請確保已安裝以下庫:

pip install PyQt5 flask

3. 全部代碼

下面是完整的實現(xiàn)代碼,并附有詳細注釋:

import sys, webbrowser
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtCore import QTimer
from flask import Flask
from werkzeug.serving import make_server
from multiprocessing import Process

# Flask app 和之前一樣
flask_app = Flask(__name__)

@flask_app.route('/')
def hello_world():
    return 'Hello, World!'

server = None
flask_process = None

def run_flask_app():
    global server
    wsgi_app = flask_app.wsgi_app
    server = make_server('127.0.0.1', 5003, wsgi_app)
    server.serve_forever()

def start_flask_process():
    global flask_process
    flask_process = Process(target=run_flask_app)
    flask_process.start()

def stop_flask_app():
    global server, flask_process
    if server:
        server.shutdown()
        server = None
    if flask_process:
        flask_process.terminate()
        flask_process = None

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyQT Flask Demo')
        self.setGeometry(100, 100, 400, 200)
        self.start_button = QPushButton('Start Flask App')
        self.start_button.clicked.connect(self.start_flask_and_open_web)
        self.stop_button = QPushButton('Stop Flask App')
        self.stop_button.clicked.connect(self.stop_flask_app)
        layout = QVBoxLayout()
        layout.addWidget(self.start_button)
        layout.addWidget(self.stop_button)
        main_widget = QWidget()
        main_widget.setLayout(layout)
        self.setCentralWidget(main_widget)

    def start_flask_and_open_web(self):
        start_flask_process()
        QTimer.singleShot(1000, lambda: webbrowser.open("http://127.0.0.1:5003"))

    def stop_flask_app(self):
        stop_flask_app()

if __name__ == '__main__':
    qt_app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(qt_app.exec_())

4. 關(guān)鍵點說明

多進程啟動 Flask:Flask 自身適用于開發(fā)環(huán)境,理論上可直接用 app.run(),但和 GUI 線程混用容易阻塞界面;因此用 multiprocessing 分離出來。

按鈕實現(xiàn):使用 PyQt5 的信號/槽機制將按鈕點擊與啟動/停止 Flask 操作綁定。

平滑關(guān)停:用 server.shutdown()process.terminate() 方法確保 Flask 服務(wù)可以被正常關(guān)閉和回收資源。

5. 運行效果

運行后你會看到如下界面:

  • 點擊“Start Flask App”即在本地 http://127.0.0.1:5000 出現(xiàn) Hello, World! 頁面。
  • 點擊“Stop Flask App”及時關(guān)閉服務(wù),網(wǎng)頁訪問失效。

6. 擴展思路

  • 可以為 Flask 增加更多 API 路由功能,實現(xiàn)桌面端-服務(wù)端交互;
  • 可以整合到企業(yè)客戶端實現(xiàn)一鍵本地服務(wù)、多端通信等應(yīng)用場景;
  • 若需生產(chǎn)環(huán)境使用,請考慮用 gunicornwaitress等 WSGI 服務(wù)器,并處理多端口/多進程切換和異常管理。

本文代碼及其思路適合用于開發(fā)調(diào)試工具、本地化桌面助手、數(shù)據(jù)展示儀表盤等實用場景。

到此這篇關(guān)于Python結(jié)合PyQt和Flask實現(xiàn)桌面端一鍵啟動/關(guān)閉Web服務(wù)的應(yīng)用的文章就介紹到這了,更多相關(guān)Python Web服務(wù)啟動與停止內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

河西区| 毕节市| 定西市| 加查县| 称多县| 吉林省| 姜堰市| 怀宁县| 泽州县| 新巴尔虎左旗| 当涂县| 措勤县| 同江市| 邵东县| 台安县| 梅州市| 辽宁省| 竹溪县| 宜都市| 虞城县| 双峰县| 永城市| 东海县| 太康县| 溆浦县| 长丰县| 郑州市| 额尔古纳市| 沈丘县| 建昌县| 温州市| 杭州市| 南投市| 海门市| 普兰店市| 军事| 太仆寺旗| 乌兰县| 湖北省| 玉田县| 祁门县|