Python中关于GUI程序的设计想法,请教大家

我打算这样写一个 GUI python, 是否可行

1. 用 gunicorn + flask+sqlite 写一个后端 , binding to 8888

2. 用 exe 启动 gunion, 以及 python webbrowser -t “http://localhost:8888

3. 或者用 PyQt + webkit 打开 “http://localhost:8888

然后把程序打包分发。

是不是这样我就做了一个 GUI 的程序了?
Python中关于GUI程序的设计想法,请教大家


7 回复

我感觉你重新发明了 Electron


对于Python GUI程序的设计,我建议先明确需求再选框架。小型工具用Tkinter足够,复杂界面推荐PyQt/PySide,Web化需求可以考虑Tkinter或PyQt的Web嵌入方案。

核心设计原则:

  1. 分离业务逻辑和界面代码(MVC/MVP模式)
  2. 使用信号槽机制解耦组件
  3. 异步处理耗时操作避免界面卡顿

简单示例(PyQt6):

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.button = QPushButton("点击我", self)
        self.button.clicked.connect(self.on_click)
        self.setCentralWidget(self.button)
    
    def on_click(self):
        self.button.setText("已点击")

app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

关键是要保持界面响应性,复杂计算放后台线程。

网页本身就是 GUI,只不过不是原生,功能和效率受到限制。网页界面你还是要用 HTML5 和 JS 来写,结果还不如直接上 electron。

自己用的话 runserver 就够了 并不需要 gunicorn,并且 gunicorn 不能跑在 win 上。
你可以用 gevent 写一个 runserver,这样 req 会提高很多。

重新发明系列

PostgreSQL 的管理前端 pgadmin4 就是这样做的,但是如果你需要原生扩展,还是 electron 比较好!

Electron 可以用在 python 上吗

回到顶部