Qt for Python & fbs#
fbs provides a powerful environment for packaging, creating installers, and signing your application. It also lets you manage updates to your application. Since fbs is based on PyInstaller, it supports Linux, macOS, and Windows.
For more details, see the fbs tutorial and the fbs manual.
Installing fbs (>= 0.7.6) is done via pip:
pip install fbs
If you’re using a virtual environment, remember to activate it before installing fbs.
After the installation, you can use the fbs executable.
Starting a new project#
fbs provides useful features for you to create a base project structure with the following command:
This command prompts you to answer a few questions to configure the details of your project, like:
Qt bindings (PySide6 or PyQt5)
Bundle indentified (for macOS)
Afterwards, you have a src/ directory that contains the following structure:
└── src ├── build │ └── settings └── main ├── icons │ ├── base │ ├── linux │ └── mac └── python
Inside the settings directory, there are a few JSON files that can be edited to include more information about your project.
The main file is in the python directory, and its default content is:
from fbs_runtime.application_context import ApplicationContext from PySide6.QtWidgets import QMainWindow import sys if __name__ == '__main__': appctxt = ApplicationContext() # 1. Instantiate ApplicationContext window = QMainWindow() window.resize(250, 150) window.show() exit_code = appctxt.app.exec() # 2. Invoke appctxt.app.exec() sys.exit(exit_code)
This example shows an empty QMainWindow. You can run it using the following command:
Freezing the application#
Once you’ve verified that the application is working properly, you can continue with the freezing process using the following command:
After the process completes, you see a message stating the location of your executable. For example:
Done. You can now run `target/MyApp/MyApp`. If that doesn't work, see https://build-system.fman.io/troubleshooting
Now, you can try to run the application. The result is the same window as the one you saw with the fbs run command:
cd target/MyApp/ ./MyApp
This is the case for Linux. For other platforms like macOS, you need to enter the directory: target/MyApp.app/Contents/macOS. For Windows, you need to find the MyApp.exe executable.