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

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

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

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

1. 項(xiàng)目簡(jiǎn)介

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

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

請(qǐng)確保已安裝以下庫(kù):

pip install PyQt5 flask

3. 全部代碼

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

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)鍵點(diǎn)說(shuō)明

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

按鈕實(shí)現(xiàn):使用 PyQt5 的信號(hào)/槽機(jī)制將按鈕點(diǎn)擊與啟動(dòng)/停止 Flask 操作綁定。

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

5. 運(yùn)行效果

運(yùn)行后你會(huì)看到如下界面:

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

6. 擴(kuò)展思路

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

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

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

相關(guān)文章

最新評(píng)論

进贤县| 清水县| 东城区| 格尔木市| 康保县| 双江| 沂源县| 咸宁市| 高雄市| 宜兰市| 叙永县| 久治县| 绵阳市| 晋江市| 泗水县| 象山县| 凌海市| 太谷县| 东乡| 滕州市| 昌图县| 大姚县| 长垣县| 上杭县| 清水河县| 合江县| 灵石县| 武冈市| 商洛市| 宣汉县| 衡阳县| 康平县| 嘉峪关市| 富宁县| 临朐县| 武川县| 毕节市| 景德镇市| 鄂伦春自治旗| 宽城| 石景山区|