File Types#
There are many different file types that you will encounter while developing Qt for Python applications, ui, qrc, qml, pyproject, etc. Here you can find a simple explanation for each of them.
Python Files .py
#
Python files are the main format you will be dealing with, while developing Qt for Python projects.
It is important to note that you can write applications only with Python
files, without the need of .ui
, .qrc
, or .qml
files, however
using other formats will facilitate some processes, and enable new
functionality to your applications.
class MyWidget(QWidget):
def __init__(self):
QWidget.__init__(self)
self.hello = ["Hallo Welt", "你好,世界", "Hei maailma",
"Hola Mundo", "Привет мир"]
self.button = QPushButton("Click me!")
self.text = QLabel("Hello World")
self.text.setAlignment(Qt.AlignCenter)
# ...
User Interface Definition File .ui
#
When using Qt Widgets Designer, you can create user interfaces using
Qt Widgets with the WYSIWYG form editor, this interface is represented
as a widget tree using XML. Here is an extract of the beginning of a
.ui
file:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
The pyside6-uic tool generates Python code from these .ui files, which you can import from your main files, so it is not necessary for you to include the .ui files in your deployed application.
For more details, see Using .ui files from Designer or QtCreator with QUiLoader and pyside6-uic.
Resource Collection Files .qrc
#
List of binary files that will be used alongside your application. As an XML-based file, its structure look like this:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>images/quit.png</file>
<file>font/myfont.ttf</file>
</qresource>
</RCC>
The pyside6-rcc tool generates Python code from these .qrc files, so you are not required to include the listed files in your deployed application.
For more details, see Using .qrc Files (pyside6-rcc).
Qt Modeling Language File .qml
#
Graphical QML applications are not related to Qt Widgets applications, and that is why the usual setup of QML project is a Python file that loads the QML file, and optionally, elements defined in Python that are exposed to QML to be used.
You can write .qml
files by hand, but also you can use tools like the
QML Designer that is embedded in Qt Creator. Additionally, there are commercial
tools like Qt Design Studio that allow you to load designs from other design
applications.
Here you can find an example of how a .qml
file looks like.
The code will display a lightgray rectangle, with the “Hello World!”
message on it.
import QtQuick 2.0
Rectangle {
id: page
width: 320;
height: 480
color: "lightgray"
Text {
id: helloText
text: "Hello world!"
y: 30
anchors.horizontalCenter: page.horizontalCenter
font.pointSize: 24;
font.bold: true
}
}
Qt Creator Python Project File .pyproject
#
For Qt Creator to load and handle Python based projects, a special file is
needed, because C++ based projects could be handle from .qmake
or
CMakeLists.txt
file, which are not used with Python-based projects.
Old versions of Qt Creator, provided a simple format with the .pyqtc
extension, which were plain-text files with one-file-per-line:
library/server.py
library/client.py
logger.py
...
There were limitations to this format, and further options that might be
added that would not be supported, which was the motivation to create a
.pyproject
file, which is a JSON-based file where more options could
be added. Here is an example of such file:
{
"files": ["library/server.py", "library/client.py", "logger.py", ...]
}