Skip to main content

Qt 跨平台应用程序和 UI 框架的 Python 绑定

项目描述

车轮状态 下载 最新版本 执照 https://readthedocs.org/projects/pip/badge/ <nav class="contents" id="table-of-contents" role="doc-toc">

目录

</nav>

介绍

PySide 是 Python Qt 绑定项目,提供对完整 Qt 4.8 框架以及生成器工具的访问,以便为任何 C++ 库快速生成绑定。

PySide 项目是开放式开发的,具有任何现代 OSS 项目所期望的所有功能,例如 git 存储库中的所有代码、用于报告错误的开放式 Bugzilla 和开放式设计流程。我们欢迎任何无需转让版权的贡献。

PySide 文档托管在http://pyside.github.io/docs/pyside/上。

兼容性

PySide 需要 Python 2.6 或更高版本以及 Qt 4.6 或更高版本。

安装

安装先决条件

安装最新的pip发行版:下载get-pip.py并使用python解释器运行它。

在 Windows 系统上安装 PySide

要在 Windows 上安装 PySide,您可以从以下选项中进行选择:

  1. 使用 pip 安装wheel二进制包:

    pip install -U PySide
  2. 使用 setuptools 安装egg二进制包(不推荐):

    easy_install -U PySide

在 Mac OS X 系统上安装 PySide

您需要先安装或构建 Qt 4.8,请参阅Qt 项目文档

或者,您可以使用Homebrew并安装 Qt

$ brew install qt

要在 Mac OS X 上安装 PySide,您可以从以下选项中进行选择:

  1. 使用 pip 安装wheel二进制包:

    $ pip install -U PySide

在 Linux 系统上安装 PySide

我们不为 Linux 提供二进制文件。请阅读在 Linux 系统上构建 PySide部分中的构建说明。

构建 PySide

反馈和参与

变化

1.2.4 (2015-10-14)

更改和错误修复的完整列表

PySide 设置

  • 确保 setup.py 使用允许的 python 版本运行

1.2.3 (2015-10-12)

更改和错误修复的完整列表

PySide

  • 修复 PYSIDE-164:修复信号连接/发出时可能出现的死锁

志博肯

  • 不要忽略拓扑中的类

  • 按声明顺序处理全局枚举

  • 按声明顺序返回枚举(添加顺序)

PySide 设置

  • 在 Linux 和 MacOS 系统上不再需要调用安装后脚本

1.2.2 (2014-04-24)

更改和错误修复的完整列表

PySide

  • 修复 PYSIDE-190:如果全局 QThreadPool.globalInstance() 正在使用 python 代码运行 QRunnable,QCoreApplication 将在退出时死锁

  • 将 GlobalReceiver 更改为显式“使用”基类的 [dis]connectNotify,以避免使用自己的重载来隐藏这些。

  • 在使用 {} 初始化 int[] 时添加显式强制转换,这是 C++11 要求的“格式正确”

  • 修复 PYSIDE-172:文件的多个规则

  • 在 Qt 资源系统中注册 qt.conf 时使用文件系统编码而不是假定的 'ascii'

志博肯

  • 删除导致 sample_list 测试失败的拒绝行

  • 从 samblebinding 测试中删除 protected

  • 添加解析“noexcept”关键字

  • 修复函数拒绝(即支持重载)

  • 使用 python 3.3 和 3.4 修复构建

  • 文档:停止使用 Sphinx 1.2+ 要求 sphinx.ext.refcounting

  • 修复具有 'const' 值的容器

  • 修复 OS X 10.9 上的编译问题

  • 定义类型时仅使用 PyTypeObject 中的字段

  • 修复缓冲区溢出处理宏定义

  • 修复“特殊”包括处理

  • 修复查找容器基类

  • 重构和改进添加的功能解析

  • 在 libsample/transform.cpp 中解决 MSVC 的缺陷 <cmath>

  • 修复样本/转换单元测试的描述

  • 更改 Handler::startElement 中某些代码的换行和缩进以提高一致性

  • 修复 '%#' 替换 # > 9

  • 改进测试的依赖关系

1.2.1 (2013-08-16)

主要变化

PySide

  • 在内存中 qt.conf 生成和注册

志博肯

  • 更好地支持超过 9 个方法参数

  • 在没有名称的枚举值上获取 .name 属性时避免段错误

PySide 设置

  • 切换到新的 setuptools (v0.9.8),它已再次与 Distribute 合并,适用于 Python 2 和 3,只有一个代码库

  • 支持仅安装 Windows SDK 构建 Windows 二进制文件(不再需要 Visual Studio)

  • 删除了 –msvc-version 选项。所需的 msvc 编译器版本现在从 python 解释器版本解析

1.2.0 (2013-07-02)

主要变化

PySide
  • 修复多个段错误并更好地跟踪 Qt 对象的生命周期

  • 修复多个内存泄漏

志博肯
  • 将 shiboken 模块安装到 site-packages

  • 修复多个段错误

PySide 设置
  • 在 Windows 系统上,通过 easy_install 安装 PySide 二进制发行版时,不再需要调用 post-install 脚本

  • 支持在 Visual Studio 命令提示符之外构建 Windows 二进制文件

  • 安装 sphinx 时构建和打包 shiboken 文档

更改和错误修复的完整列表

PySide
  • 正确设置 PYTHONPATH 进行测试

  • 修复关机时的潜在段错误

  • 修复 PYSIDE-61

  • 告诉 Qt 在 PySide 包中查找 qml 导入

  • 修复 C++11 模式下的构建

  • 修复 QByteArray 内存泄漏

  • 初始化插件文件夹时忽略 QtCore 导入错误

  • 在 Windows 上预加载 OpenSSL DLL。

  • 首先在 PySide 包中查找 Qt 的插件文件夹,而不是仅在 Qt 的安装或构建文件夹中

  • 添加显式类型转换以修复 mingw 编译错误

  • 在删除之前使用 QObject 属性使包装器无效

  • 在删除之前使元对象包装器无效

  • 修复从 C++ 映射类型转换为 Python 字典时的引用泄漏

  • 更改 pysitetest 和信号目录的顺序,因为 signals/disconnect_test.py 依赖于 pysidetest 模块

志博肯
  • 从 html 文档中删除了旧徽标

  • 在模块初始化错误中添加缺少的返回

  • 不要破坏 -Werror=non-virtual-dtor

  • 修复 shiboken 测试以进行最小绑定测试

  • Decref 对类型对象的引用

  • 修复使用 shiboken.delete 时的段错误

  • 对实例方法使用非静态方法 def

  • 修复添加 recursive_invalidate 时引入的错误

  • 修复 C++11 模式下的构建

  • 防止invalidate中的无限递归

  • 修复与垃圾收集器的可能冲突

  • 修复退出时可能发生的崩溃

  • 修复 unsigned long long 的处理并提供单元测试

  • 添加测试以说明 typedef 枚举的问题

  • 如果为 PySide 生成,则使用 getWrapperForQObject 进行转换

  • 允许在没有 python 共享库的情况下进行编译

  • 如果 wrapper 为 NULL,则使用父类的 metaObject

  • 可以选择使用有效包装器对 free'd 指针进行断言

  • 在启用 pydebug 的情况下查找 python3 库

  • 修复 PYSIDE-108 错误并添加示例

  • PYSIDE-83 修复段错误调用 shiboken.dump

  • 修复和测试错误 PYSIDE-72 的案例

  • 覆盖所有具有相同名称的函数,而不仅仅是一个

  • 更新向量转换

  • 将 typedef 示例添加到最小

  • 将测试文件添加回 cmake

  • 不要使用它->擦除后第二个

  • 查找在 2nd+ 基类中定义的函数修改。修复了错误 PYSIDE-54。

  • 为所有 ObjectTypes 设置默认散列函数。修复错误 PYSIDE-42。

  • 修复系统上未安装 libxslt 时的编译。

  • 修复了 SOABI 的解析。SOABI 是在 Linux 上实现的,但不是在 Windows 上实现的

  • 不要在 dllexported 类中使用内联方法来保持 VC++ 快乐

  • 如果进程没有管理员权限,则在 2.6+ os.tmpfile() 中使用 SpooledTemporaryFile 在 win32 上失败

PySide 设置
  • 支持在 Visual Studio 命令提示符之外构建 Windows 二进制文件

  • 安装 sphinx 时构建和打包 shiboken 文档

  • 支持 Ubuntu 13.04 和 Fedora 18

  • 修复了“开发”设置工具命令

  • 文档更新

  • 添加 –build-tests 选项以启用构建测试

  • 添加 –jom 和 –jobs 选项

  • 添加 –no-examples 选项以排除示例

  • 添加 –relwithdebinfo 选项以启用 release-with-debug-info 构建模式

  • 添加 –ignore-git 选项

  • 添加 –make-spec 选项以指定 make 生成器

1.1.2 (2012-08-28)

Bug修复

  • 在信号发射期间,回调后没有返回类型

  • 在 clear() 方法中使 QStandardModel::invisibleRootItem 无效

  • QAbstractItemModel 的 selectionModel() 所有权政策错误

  • 改进了 QVector 到 python 的转换

  • 如果找不到工具,则禁用文档字符串生成。

  • 修复了使用 VC++ 编译 PySide 的一些问题

  • 将 shiboken 模块安装到 site-packages

  • 修复系统上未安装 libxslt 时的编译。

  • 为所有 ObjectTypes 设置默认散列函数。

  • 修复调用 shiboken.dump 的段错误

1.1.1 (2012-04-19)

主要变化

  • 统一工具链!没有 GeneratorRunner 和 ApiExtractor,现在你只需要 Shiboken 来编译 PySide。

Bug修复

  • 1105 Spyder 因 HEAD 而失败

  • 1126 在 signalInstanceDisconnect 中引发异常时的 Segfault

  • 1135 SIGSEGV 在使用 QUiLoader 加载自定义小部件时覆盖 createWidget()

  • 1041 QAbstractItemModel 的 selectionModel() 所有权策略错误

  • 1086 generatorrunner 段错误处理#include

  • 1110 并发错误导致GC堆损坏

  • 1113 如果从 QML 实例化,则在用户定义的 QML 元素的构造函数中实例化 QObject 崩溃

  • 1129 由 QStandardItem/QStandardItemModel 关闭时出现分段错误

  • 1104 QSettings 对长整数有问题

  • 1108 tests/QtGui/pyside_reload_test.py 在禁用字节码写入时失败

  • 1138 QUiLoader 的子类化导致“内部 C++ 对象已删除”异常(再次)

  • 1124 QPainter.drawPixmapFragments 应该将列表作为第一个参数

  • 1065 QFileDialog 文档中的示例无效

  • 1092 shiboken 将自己命名为“发电机”

  • 1094 shiboken 不抱怨无效选项

  • 1044 示例中对父构造函数的调用不正确

  • 1139 由于线程状态 (tstate) 为 NULL,在退出时崩溃

  • PYSIDE-41 QModelIndex 不可散列

1.1.0 (2012-01-02)

主要变化

  • 新型转换器方案

Bug修复

  • 1010 Shiboken Cygwin补丁

  • 1034 在 Windows 上使用 Python 3.2.2 32 位编译 PySide 时出错

  • 1040 pyside-uic 在使用它们之前覆盖属性

  • 1053 与 .pro 文件一起使用的 pyside-lupdate 无法处理包含空格的 Windows 路径

  • 1060 QUiLoader 的子类化导致“内部 C++ 对象已删除”异常

  • 1063 在 Linux 上使用“QTextStream + QFile + QTextEdit”写入文件的错误

  • 1069 QtCore.QDataStream 在写入 Python 字符串时静默失败

  • 1077 调用 QSyntaxHighlighter.document() 时应用程序退出崩溃

  • 1082 OSX 二进制链接损坏

  • 1083 winId 返回一个 PyCObject 使得无法比较两个 winId

  • 1084 在套接字上写入 unicode 字符串时崩溃(段错误)

  • 1091 PixmapFragment 和 drawPixmapFragment 未绑定

  • 1095 shiboken教程没有例子

  • 1097 QtGui.QShortcut.setKey 需要 QKeySequence

  • 1101 报告类型系统中的无效函数签名

  • 902 通过 Python 模块公开 Shiboken 功能

  • 969 QAbstractItemView 的 viewOptions 错误

1.0.9 (2011-11-29)

Bug修复

  • 1058 PySide/QtUiTools/glue/plugins.h 中的奇怪代码

  • 1057 valgrind 检测到“有条件的跳转或移动取决于未初始化的值”

  • 1052 PySideConfig.cmake 包含一个无限循环,因为缺少 SHIBOKEN_PYTHON_SUFFIX 的默认值

  • 1048 QGridLayout.itemAtPosition() 在应该返回 None 时崩溃

  • 1037 shiboken 无法在 i386(和其他)上针对 python 3.2(正常和 -dbg)构建

  • 1036 Qt.KeyboardModifiers 总是计算为零

  • 1033 QDialog.DialogCode 实例和从 QDialog.exec_ 哈希返回的值到不同的值

  • 1031 QState.parentState() 或 QState.machine() 导致 python 在退出时崩溃

  • 1029 qmlRegisterType 增加引用计数失败

  • 1028 QWidget winId 丢失

  • 1016 调用 Q_INVOKABLE 方法返回非 QVariant 是不可能的…

  • 1013 连接到 QSqlTableModel.primeInsert() 导致崩溃

  • 1012 启用强化标志的 FTBFS

  • 1011 PySide Cygwin 补丁

  • 1010 Shiboken Cygwin补丁

  • 1009 GeneratorRunner Cygwin 补丁

  • 1008 ApiExtractor Cygwin 补丁

  • 891 ApiExtractor 不支持 doxygen 作为文档生成的后端。

1.0.8 (2011-10-21)

主要变化

  • 实验性 Python3.2 支持

  • Qt4.8 测试版支持

Bug修复

  • 1022 RuntimeError: 获取对象的 str 时超出最大递归深度

  • 1019 覆盖 QWidget.show 或 QWidget.hide 不起作用

  • 944 QIcon上的段错误(无).pixmap()

1.0.7 (2011-09-21)

Bug修复

  • 996 在 Fedora 的构建脚本中缺少 QtWebKit 的依赖项

  • 986 文档链接

  • 985 提供版本化的 pyside-docs zip 文件以帮助打包者

  • 981 QSettings 文档应该理解 value() 在不同平台上的行为变化

  • 902 通过 Python 模块公开 Shiboken 功能

  • 997 QDeclarativePropertyMap 不工作。

  • 994 QIODevice.readData 必须使用 qmemcpy 而不是 qstrncpy

  • 989 酸洗 QColor 失败

  • 987 断开未连接的信号

  • 973 shouldInterruptJavaScript 插槽覆盖永远不会被调用

  • 966 QX11Info.display() 丢失

  • 959 无法将 QVariant 传递给 QtWebkit 桥接器

  • 1006 QLabel 初始化中的段错误

  • PySide/Spyder 退出时出现 1002 分段错误

  • 切换到另一个应用程序后 Spyder 出现 998 Segfault

  • 995 QDeclarativeView.itemAt 返回错误的引用。(导致 SEGFAULT)

  • 尝试断开未连接的信号时出现 990 Segfault

  • 975 可能的内存泄漏

  • 第991章 各种类型的__repr__坏了

  • 988 QTabWidget 中的 currentChanged 信号提供的类型在 1.0.6 中已更改

1.0.6 (2011-08-22)

主要变化

  • 新的文档布局;

  • 修复了上一个版本(1.0.5)的一些回归;

  • 匿名连接期间的优化;

Bug修复

  • 972 graphicsview 示例的anchorlayout.py 退出时引发不可写内存异常

  • 953 当 QObject 在 QTimer.singeShot 之后被垃圾回收时的 Segfault

  • 951 ComponentComplete 未在 QDeclarativeItem 子类上调用

  • 965 QtUiTools.QUiLoader.load 中的段错误

  • 958 资源文件分段错误

  • 944 QIcon上的段错误(无).pixmap()

  • 941 以 QtCore.Qt 类型作为参数的信号具有无效签名

  • 964 QAbstractItemView.moveCursor() 方法丢失

  • 第963章

  • 961 QColor.__repr__/__str__ 应该更 Pythonic

  • 960 QColor.__reduce__ 对于 HSL 颜色不正确

  • 950 实施 Q_INVOKABLE

  • 940 setAttributeArray/setUniformValueArray 不带数组

  • 931 isinstance() 因信号实例而失败

  • 928 100 的 QGraphicItems 与信号连接导致减速

  • 930 文档混合了信号和功能。

  • 923 使QScriptValue(或QScriptValueIterator)实现Python迭代器协议

  • 922 QScriptValue 的 repr() 应该提供有关其数据的一些信息

  • 900 QtCore.Property 作为装饰器

  • 895 jQuery版本过时,分发代码去重破坏文档搜索

  • 731 不能指定多个“因为”参数

  • 983 copy.deepcopy 使用 QColor 引发 SystemError

  • 947 NETWORK_ERR 在 QtWebKit 窗口与服务器交互期间

  • 873 已弃用的方法可能会发出 DeprecationWarning

  • 831 PySide 文档将为每个类提供一个“继承者”列表

1.0.5 (2011-07-22)

主要变化

  • “ui”文件中存在的小部件在根小部件中导出,请查看 PySide ML 线程以获取更多信息[1];

  • pyside-uic 在 MacOS 平台上生成没有父级的菜单栏;

  • 信号连接优化;

Bug修复

  • 892 破坏 QWidget 时的 Segfault 并且 QApplication 安装了事件过滤器

  • 407 使用 QObject 和本机 python 类进行多重继承时崩溃

  • 939 Shiboken::importModule 必须验证 PyImport_ImportModule 是否成功

  • 937 QProcess 中缺少 pid 方法

  • 927 QThread 代码上的段错误。

  • 925 将 QScriptValue 作为 QObject 传递或在 QScriptValue 上使用 .toVariant() 时出现 Segfault

  • 905 QtGui.QHBoxLayout.setMargin 函数调用是由 pyside-uic 创建的,但这在 pyside 绑定中不可用

  • 904 反复打开带有 Qt.WA_DeleteOnClose 设置的 QDialog 会导致 PySide 崩溃

  • 899 带有“QVariantList”属性的段错误。

  • 893 Shiboken 在父控件中泄漏引用

  • 878 Shiboken 如果添加新类,可能会生成不兼容的模块。

  • 938 QTemporaryFile JPEG 问题

  • 934 QByteArray 的 __getitem__ 行为异常

  • 929 pkg-config 文件不知道 Python 版本标签

  • 926 qmlRegisterType 不适用于 QObject

  • 924 允许通过 [] 访问 QScriptValue

  • 921 信号不会在对象销毁时自动断开

  • 920 不能为两个信号使用同一个插槽

  • 919 QStyle 方法的默认参数不起作用

  • 915 QDeclarativeView.scene().addItem(x) 使x对象无效

  • 913 QTabWidget 内的小部件未导出为包含小部件的成员

  • 910 installEventFilter() 增加目标对象的引用计数

  • 907 pyside-uic 在OS X下生成的代码中添加MainWindow.setMenuBar(self.menubar)

  • 903 项目委托中的事件过滤器

  • 897 QObject.property() 和 QObject.setProperty() 方法对于用户定义的属性失败

  • 896 QObject.staticMetaObject() 丢失

  • 916 缺少有关何时可以在文档中使用关键字参数的信息 [原为:QListWidgetItem 的构造函数忽略文本参数]

  • 890 将 QSpinBox 上 valueChanged(int) 的信号连接示例添加到文档

  • QPixmapCache 的 821 映射接口

  • 909 删除 QMainWindow/QApplication 导致分段错误

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

PySide-1.2.4.tar.gz (9.3 MB 查看哈希

已上传 source

内置发行版

PySide-1.2.4-cp34-none-win32.whl (41.0 MB 查看哈希

已上传 3 4

PySide-1.2.4-cp33-none-win32.whl (41.1 MB 查看哈希

已上传 3 3

PySide-1.2.4-cp27-none-win_amd64.whl (45.0 MB 查看哈希

已上传 2 7

PySide-1.2.4-cp27-none-win32.whl (41.0 MB 查看哈希

已上传 2 7

PySide-1.2.4-cp26-none-win_amd64.whl (45.1 MB 查看哈希

已上传 2 6