优点

  • 基于高性能的Qt的GUI控件集。
  • 能够跨平台运行在Windows、Linux和Mac OS等系统上。
  • 使用信号/槽(signal/slot)机制进行通信。
  • 对Qt库的完全封装。
  • 可以使用Qt成熟的IDE(如Qt Designer)进行图形界面设计,并自动生成可执行的Python代码。
  • 提供了一整套种类繁多的窗口控件。

信号/槽

Qt使用一种称为信号/槽的机制在窗口控件之间传递事件和消息。这种机制完全不同于其他图形界面开发库所采用的回调(callback)机制,使用信号/槽可以使程序更加安全和简洁。所开发的应用程序越大,Qt/PyQt的这个优势就越明显。

打包

打包资源文件:

  1. 在 spec 脚本文件中,添加 datas=[('static', 'static')], 这表示在程序在程序运行时将 static 目录解压到临时目录下的 static 目录中。
  2. 在代码中创建一个获取资源目录的函数
def resource_path(relative_path):
    """Get absolute path to resource, works for dev and for PyInstaller"""
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
        print(os.path.abspath("."))
    return os.path.join(base_path, relative_path)

QT creater

生成 .ui xml 类型的布局文件,并使用 pyuic 编译为 python 文件。