QML 是一种描述性语言,用它开发程序可以比传统语言更快速。由于它的描述性特性,用于设计 UI 界面非常理想。在 QML 中,用户界面用一个带有属性的对象树来描述。在本篇教程中,我们将讲解怎么用 PySide6 和 QML 完成一个简单的 “Hello World” 程序。
一个 PySide6/QML 程序至少包含两个文件:一个 QML 文件用于描述用户界面,另一个 python 文件用于载入 QML 文件。简单起见,我们把这两个文件放在同一个目录下。
下面是一个简单的 QML 文件,命名为 view.qml:
import QtQuick 2.0
Rectangle {
width: 200
height: 200
color: "green"
Text {
text: "Hello World"
anchors.centerIn: parent
}
}
开头需要引用 QtQuick 2.0,这是一个 QML 模块。
剩下的代码对于用过 HTML 或者 XML 的同学来说是非常直观的。简单来说,我们创建了一个绿色的 200*200 的正方形,然后在里面加入了 “Hello World” 的文本。代码 anchors.centerIn: parent
让文本显示在它的父组件(绿色正方形)的中心位置。
接着,让我们看看 PySide6 代码,将其命名为 main.py:
from PySide6.QtWidgets import QApplication
from PySide6.QtQuick import QQuickView
from PySide6.QtCore import QUrl
app = QApplication([])
view = QQuickView()
url = QUrl("view.qml")
view.setSource(url)
view.show()
app.exec()
如果你一直跟着我们的教程并且对 PySide6 比较熟悉了,这样的代码应该看了很多了。这里唯一不同的地方是你必须 import QtQuick
,然后设置 QQuickView 对象的源为你的 QML 文件的 URL。最后,像其他 Qt Widget 一样,你需要调用 QQuickView.show()
。
备注
如果你要开发桌面应用,你需要考虑在显示窗口之前加上view.setResizeMode(QQuickView.SizeRootObjectToView)
。
更多关于 Qt for Python 文章,可以查看 PySide6 官方教程 专栏。