杰瑞科技汇

python 开发windows程序

使用 Tkinter (Python 内置)

这是 Python 自带的 GUI 库,无需额外安装,是入门最快、最简单的方式。

python 开发windows程序-图1
(图片来源网络,侵删)
  • 简介:Tkinter 是 Python 的标准 GUI 工具包,它封装了 Tcl/Tk 图形库,提供了各种控件(如按钮、标签、输入框、菜单等)来构建桌面应用。

  • 优点

    • 开箱即用:随 Python 一起安装,无需 pip
    • 跨平台:同样的代码在 Windows、macOS 和 Linux 上都能运行。
    • 文档丰富:作为标准库,有大量的教程和社区支持。
    • 轻量级:程序本身很小,资源占用少。
  • 缺点

    • 界面老旧:默认外观比较朴素,难以实现现代化的、美观的界面。
    • 自定义程度低:很难对控件的外观和行为进行深度定制。
    • 性能一般:对于复杂的动画或大量数据刷新,性能可能不是最优。
  • 适用场景

    python 开发windows程序-图2
    (图片来源网络,侵删)
    • 内部工具、脚本 GUI 化。
    • 简单的配置程序。
    • 学习 GUI 编程的入门项目。
  • 简单示例

    import tkinter as tk
    from tkinter import messagebox
    def show_message():
        messagebox.showinfo("提示", "你好,Tkinter!")
    # 创建主窗口
    root = tk.Tk()
    root.title("我的第一个 Tkinter 程序")
    root.geometry("300x200") # 设置窗口大小
    # 添加一个标签
    label = tk.Label(root, text="欢迎使用 Tkinter", font=("Arial", 14))
    label.pack(pady=20) # pady 上下边距
    # 添加一个按钮
    button = tk.Button(root, text="点击我", command=show_message)
    button.pack(pady=10)
    # 运行主循环
    root.mainloop()

使用 PyQt6 / PySide6 (现代、功能强大)

这是目前最流行、功能最强大的 Python GUI 框架之一,它们是 Qt 库的 Python 绑定。

  • 简介:Qt 是一个成熟的、功能全面的 C++ 框架,被广泛应用于各种桌面和移动应用,PyQt6 和 PySide6 是它的官方或社区支持的 Python 版本,PySide6 是官方推荐的,拥有更友好的许可证(LGPL)。

  • 优点

    python 开发windows程序-图3
    (图片来源网络,侵删)
    • 界面美观:可以轻松创建现代化、专业的用户界面。
    • 功能强大:提供几乎你能想到的所有控件和高级功能(如多线程、数据库、网络、绘图、3D 等)。
    • 高度可定制:对控件的样式(使用 QSS,类似 CSS)和行为有极高的控制力。
    • 优秀的布局系统:可以方便地设计响应式、自适应的界面。
  • 缺点

    • 学习曲线陡峭:API 相对复杂,概念较多(信号与槽、布局管理器等),需要投入更多时间学习。
    • 需要安装:需要使用 pip 安装 PyQt6PySide6
    • 文件较大:打包后的程序体积会比 Tkinter 大很多,因为它包含了 Qt 的核心库。
  • 适用场景

    • 功能复杂的桌面应用程序。
    • 对界面美观度要求高的软件。
    • 需要 MDI(多文档界面)、复杂表格、图表等专业组件的应用。
  • 简单示例 (PySide6)

    import sys
    from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel
    # 创建一个自定义的窗口类
    class MyWindow(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("PySide6 程序")
            self.setGeometry(100, 100, 300, 200)
            # 创建控件
            self.label = QLabel("欢迎使用 PySide6")
            self.button = QPushButton("点击我")
            # 连接信号和槽
            self.button.clicked.connect(self.on_button_clicked)
            # 设置布局
            layout = QVBoxLayout()
            layout.addWidget(self.label)
            layout.addWidget(self.button)
            self.setLayout(layout)
        def on_button_clicked(self):
            self.label.setText("按钮被点击了!")
    # 程序入口
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        window = MyWindow()
        window.show()
        sys.exit(app.exec())

使用 Dear PyGui (极简、高性能)

这是一个非常现代的 GUI 库,以其极简的 API 和出色的性能著称。

  • 简介:Dear PyGui (DPG) 使用 C++ 进行渲染,通过 Python 绑定提供接口,它基于 Immediate Mode(立即模式)GUI 设计理念。

  • 优点

    • 性能极高:特别适合需要频繁刷新数据、绘制图表、3D 渲染的应用。
    • API 极简:学习成本非常低,几行代码就能创建一个界面。
    • 数据绑定:内置了强大的数据绑定系统,可以轻松将数据与 UI 同步。
  • 缺点

    • 立即模式:它的设计理念与传统“保留模式”的 GUI(如 Tkinter, PyQt)不同,需要一些时间适应。
    • 定制性有限:虽然性能好,但在实现极其复杂的自定义动画或布局时,不如 PyQt 灵活。
    • 社区相对较小:虽然增长迅速,但社区规模和资源不如 PyQt。
  • 适用场景

    • 数据可视化工具。
    • 实时监控面板。
    • 需要高性能计算并展示结果的应用。
    • 快速原型制作。
  • 简单示例

    import dearpygui.dearpygui as dpg
    dpg.create_context()
    with dpg.window(label="Dear PyGui 示例", width=400, height=300):
        dpg.add_text("欢迎使用 Dear PyGui!")
        dpg.add_button(label="点击我", callback=lambda: dpg.set_value("text_id", "你好,Dear PyGui!"))
        dpg.add_text("等待点击...", tag="text_id")
    dpg.create_viewport(title='自定义窗口', width=800, height=600)
    dpg.setup_dearpygui()
    dpg.show_viewport()
    dpg.start_dearpygui()
    dpg.destroy_context()

使用 Web 技术 (Electron + PyScripter)

这是一种混合方案,利用 Web 技术来构建桌面应用,然后用 Python 作为后端逻辑。

  • 简介
    1. 前端:使用 HTML, CSS, JavaScript 构建用户界面,你可以使用任何现代前端框架(如 React, Vue, Svelte)。
    2. 桥接:使用一个 Python Web 服务器(如 Flask, FastAPI)来提供 API。
    3. 桌面化:使用 Electron 这样的框架,将你的 Web 应用打包成一个原生的桌面程序,Electron 本质上是打包了 Chromium 浏览器和 Node.js 运行时。
    4. Python 集成:为了让 Electron 能直接运行 Python 代码,可以使用 PyodidePyScripter 等技术,将 Python 解释器嵌入到 Web 页面中。
  • 优点
    • 界面开发体验好:可以利用庞大的 Web 生态和开发者社区,轻松实现美观、复杂的界面。
    • 跨平台:一次开发,多端部署(Windows, macOS, Linux)。
    • 技术栈统一:如果团队熟悉 Web 开发,上手非常快。
  • 缺点
    • 资源占用高:程序本质上是一个完整的浏览器,内存和 CPU 占用通常远高于原生 GUI 程序。
    • 架构复杂:需要同时管理前端、后端和桌面打包三部分,增加了复杂性。
    • 启动速度慢:相比原生应用,启动时间通常更长。
  • 适用场景
    • 对界面要求极高,且希望复用 Web 开发技能的项目。
    • 需要跨平台,且不介意程序体积和资源占用的应用。
    • 将现有的 Web 应用快速打包成桌面版。

使用 GUI 框架 + 打包工具

写好程序后,你需要将它打包成一个 .exe 文件,方便在没有安装 Python 环境的电脑上运行。

  • 常用打包工具

    • PyInstaller: 最流行、最易用的打包工具之一,它可以将你的 Python 脚本及其所有依赖项打包成一个独立的 .exe 文件。
    • Nuitka: 一个将 Python 代码编译成 C 代码的工具,然后再编译成可执行文件,理论上可以获得更好的性能,但配置和使用比 PyInstaller 复杂。
    • cx_Freeze: 另一个历史悠久的打包工具,功能也比较强大。
  • PyInstaller 使用示例: 假设你有一个名为 my_app.py 的 PyQt6 程序。

    1. 安装 PyInstaller: pip install pyinstaller

    2. 打包命令:

      # 基本打包,生成一个文件夹
      pyinstaller my_app.py
      # 打包成单个 .exe 文件
      pyinstaller -F my_app.py
      # 打包时不显示控制台窗口(适用于 GUI 程序)
      pyinstaller -F -w my_app.py

      打包完成后,你可以在 dist 目录下找到生成的 .exe 文件。


总结与选择建议

方法 优点 缺点 适用场景
Tkinter 简单、内置、跨平台 界面老旧、定制性差 入门学习、简单工具、脚本GUI化
PyQt6/PySide6 功能强大、界面美观、高度可定制 学习曲线陡峭、文件体积大 专业级应用、复杂软件、对界面有要求的项目
Dear PyGui 性能极高、API极简 立即模式、定制性有限 数据可视化、实时监控、高性能计算应用
Web技术 界面开发体验好、跨平台 资源占用高、架构复杂 利用Web技术栈、追求现代化界面、快速跨平台

如何选择?

  • 如果你是初学者,只想给脚本加个简单的界面:从 Tkinter 开始,它最简单直接。
  • 如果你想开发一个功能完善、外观专业的商业软件PySide6 是你的不二之选,是目前工业界的标准。
  • 如果你的程序需要处理大量数据、实时图表,对性能要求苛刻:可以尝试 Dear PyGui,它可能会给你带来惊喜。
  • 如果你是 Web 开发者,或者你的应用核心是复杂的 Web 界面:可以考虑 Electron + PyScripter 的混合方案。

对于大多数 Windows 程序开发需求,PySide6 是目前最主流、最均衡、也是最被推荐的选择。

分享:
扫描分享到社交APP
上一篇
下一篇