This post is a first one in a series in which I pretend to try different widget toolkits the select which is the most suited for your purposes. I’ll be avaliating each one based in the following criteria:
- Ease of use
- Development speed
- Learning curve
- Best Features
- Code length
- Use of hardware resources (size of executable, CPU usage, and average RAM used on execution)
For the execution of the software developed I’ll be using the following systems:
- PC Windows 10 with Celeron N4000 with 4 GB RAM
- PC Windows 11 with Amd Ryzen 5 with 10 GB RAM
- PC Linux Ubuntu 22 in an Intel Core i3 with 4 GB RAM
- Mac Mini M2 with 8 GB RAM
The development is made in the two Windows PCs and the Mac, since the Linux based one the access is done remotely, but the majority of the code writing and test is made in the PCs, with the Mac and Linux used for compilation and execution.
The purpose of the software to be created in the different toolkits is the same: write an app launcher (a little like a start menu), accessible through an icon in the systray or the presence of the app in the task bar (Dock, in mac). Double clicking on an entry in the launcher list on the icon will launch the app. It´s possible to add program items to the list preferebilly through drag and drop. And the definitions are stored in a JSON file, to be recovered in the next session,
In the case the toolkit lacks this funcionality, the editing will be made through context menus, or in last resource, top dropdown menus. For inspiration, I´ll be using the ASuite app launcher, very useful if you need a custom launcher to execute desktop applications stored in an external USB disk. This one, according to its author, SalvadorSoftware, was developed in the Lazarus IDE in Free Pascal.
For the toolkits, I chosed this ones:
- Tkinter (wrapped in PySimpleGUI)
- Windows Forms (included in .NET)
- Free Pascal
- Java Swing
- Delphi (VCL)
Some of these come with ther own IDEs, which is the case for Autohotkey, Windows Forms, and Free Pascal. I´ll be using this ones for each toolkit. In the case the toolkit lacks one, I´ll resort to VS Code. In the case of Qt and WxWidgets, which primarilly designed for coding in C++, i’ll use the Python Wrappers.