Qt 跨平台应用程序和 UI 框架的 Python 绑定
项目描述
目录
介绍
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,您可以从以下选项中进行选择:
使用 pip 安装wheel二进制包:
pip install -U PySide
使用 setuptools 安装egg二进制包(不推荐):
easy_install -U PySide
在 Mac OS X 系统上安装 PySide
您需要先安装或构建 Qt 4.8,请参阅Qt 项目文档。
或者,您可以使用Homebrew并安装 Qt
$ brew install qt
要在 Mac OS X 上安装 PySide,您可以从以下选项中进行选择:
使用 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 导致分段错误
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。