What's the best GUI library for doing asynchronous work?

I’m making a GUI to control a robot over serial and I want to be able to use buttons and text fields to control asynchronous loops that send and receive data over serial.

What GUI library makes this easiest? There seem to be a lot of GUI libraries that all work in very different ways.

1 Like

I chose Tk.jl because it seemed simple and had individual event handlers for pushing and releasing a button and it was terrible. Tk.jl segfaults when you try to multi-thread with it.

1 Like

The real solution here is to use StableTasks.jl @spawnat to guarentee thread safety when talking to Tk.jl.

1 Like

I’m using QML.jl now and it seems far more versatile(but much harder to learn and requires that you also know javascript) and has explicit support for observables but is also not thread safe.

1 Like

People have created pretty complex UIs like this with makie :wink:

E.g. GUI explanation · TempestSDR.jl

6 Likes

I did consider that, and it probably is the easiest and most robust way to do this, but I was unhappy with how messy the layout was with GLMakie.jl, at least I couldn’t figure out how to make text and other elements properly align.

But I definitely should have prototyped my project in GLMakie.jl in stead of in Tk.jl.

1 Like

Do you have an example for a such a messy layout? Always happy to solve people’s alignment problems :smiley:

6 Likes