赞
踩
从目前使用情况来看,PyQt使用的比较多,但PyQt是GPL授权,而PySide是LGPL授权,其功能与PyQt区别不大,但可以闭源发布。量化软件vnpy最新版使用的就是pyside6,下文主要介绍pyside6。
安装前提:Python 3.6+。使用venv或conda创建一个新的python环境。
1 2 | conda create -n qt python=3.8 conda activate qt |
or
1 2 | python -m venv pyside source pyside/bin/activate |
然后使用pip安装pyside6
1 2 | pip install pyside6 # 安装最新版本 pip install pyside6==6.0 # 安装6.0版本 |
测试安装是否成功
1 2 3 4 5 | >>> import PySide6.QtCore >>> print(PySide6.__version__) 6.2.1 >>> print(PySide6.QtCore.__version__) 6.2.1 |
除了pyside6 lib库安装好外,还安装了pyside6-designer、pyside6-uic、pyside6-rcc等工具。
pyside6-uic -i form.ui -o ui_form.py
pyside6-rcc -i resources.qrc -o rc_resources.py
将下列代码保存为hello_py.py,在终端运行python hello_py.py即可。
1 2 3 4 5 6 7 | import sys from PySide6.QtWidgets import QApplication, QLabel app = QApplication(sys.argv) label = QLabel("Hello Qt for Python!") label.show() app.exec() |
说明:
Qt包括很多组件和模块,比如qtbase是一个包含很多模块的基础组件,它包含的module有:QtCore, QtGui, QtWidgets, QtNetwork等。所有这些module包含了很多你可以直接使用的类,比如QtCore里面包含了QFile, QTime, QByteArray等类。
QtWidgets是一个提供了很多预定义Widgets的模块,这些Widgets你可以添加到图形应用程序里面,包括Buttons, Labels, Boxes, Menus等。
QML提供了另外一种不同于Widgets的创建用户界面的方法,它首先的动机是应用于移动应用开发,但也可以在桌面应用开发中使用。QML跟Qt Quick模块一起,提供了使用点击、拖放、动画、过渡等与移动设备交互的方式。你可以在QML/Quick应用中找到的元素都聚焦于提供更现代的应用中
Qt基本模块有三部分:
QML and Qt Quick使用这些模块从python跟QML语言交互
Qt Designer时一个图形UI设计工具,可以使用 Qt Designer基于Qt Widgets创建图形界面,它作为一个单独程序pyside6-designer或者嵌入到Qt Creator IDE。Using Qt Designer.设计存储在.ui文件中,是基于XML格式的文档. 可以使用pyside6-uic在编译时将设计转换成python/c++代码。
可以使用QtUiTools模块里面的类来直接加载ui文件
Using .qrc Files (pyside6-rcc) – Qt资源系统是一个可以用来在应用程序中存储二进制文件的机制,这些文件可以嵌入到应用程序并且可以被QFile类和QIcon、QPixmap类的构造函数来访问,文件名用:/来开始。最常见的使用情况时自定义的图片、图标、字体等
Qt Linguist和它相关的工具可以用来提供应用程序多语言的翻译功能,参考Translating Applications
Qt Widgets应用使用一个依赖于底层平台的默认主题。在某些情况,存在一些系统范围的配置可以用来修改Qt主题,也可以自己的widgets并为每个组件提供一个自定义的style. 参考Styling the Widgets Application
QML是一个声明式语言,可以让你比传统语言(c++)更快的开发应用程序。由于它的声明特性,非常适合设计应用程序的UI。在QML,一个用户界面被指定为带有属性的对象树
一个PySide6/QML应用程序由至少2个不同的文件组成–一个是QML描述的用户界面文件,另外一个是用于load QML文件的python文件。QtQml和QtQuick模块提供了基于QML的UI的必要功能
Shiboken 擅长Qt相关的binding生成,这意味着任何Qt/C++项目可以很容易暴露给python。另外,Shiboken也提供了对于非Qt的c++项目的支持
我发文章的几个地方,欢迎关注公众号,文章会优先发布在公众号上。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。