title: Graphical User Interfaces categories: Haskell Python ...
I (/who/astynax) have spent a lot of time building various user interfaces:
- /TUIs for the MS-DOS programs written in QBasic and Turbo Pascal
- Graphical interfaces for Windows programs written in Borland Delphi
- Tcl/Tk-based GUIs and "Web GUIs" for Linux programs
Here I have written my experience in doing such stuff.
I didn't use the Tcl itself but I played a lot with its GUI toolkit, the Tk. Usually it were the Tkinter for /Python or uni-htk for /Haskell. Tk is pretty simple to use, lightweight, and "just works" on many platforms. And it also can look good!
Here is a nice but opinionated article about Tkinter: "How to setup correctly an application with Python and Tkinter"
Also, if you are a Pythonista take a look at PySimpleGUI. It is a wrapper that helps to create Tk, Qt, and even the Web GUIs using a set of universal primitives. Code looks so script'ish for me. But it is quite Ok when you want to make a prototype ASAP.
Nowadays I prefer to use /Elm. Though I always have in my pocket the Threepenny-GUI (a /Haskell library) if I will need to do some heavy lifting :)
Usually, WebGUI implies /CSS and under the link I keep a couple of good variants of it to use in my projects.
When I don't need a full-featured GUI and some simple menu-like interface is enough I use the /Rofi with some Python scripting.
Sometimes I just need to show a simple confirmation window or a text entry. In such cases /Zenity can be just good.
Recently I found a nice set of tasks that are testing how your favorite GUI toolkit capable to do the real work. Here it is: "7GUIs: A GUI Programming Benchmark". My advice: just scroll through the list of tasks and look to the last ones! :)
- zserge/lorca, "Build cross-platform modern desktop apps in Go + HTML5" (/Golang)
- BeeWare, "Write your apps in /Python and release them on <...many platforms> using rich, native user interfaces."
- Nuklear, "A single-header ANSI C immediate mode cross-platform GUI library" with bindings for /Rust
- libui, "Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports."