2

I am looking for Open-source Cross-platform toolkit for creating graphical user interface (GUI) in Golang.

And I've found:
https://github.com/avelino/awesome-go#gui

GTK+
http://www.gtk.org/
https://en.wikipedia.org/wiki/GTK%2B
https://github.com/mattn/go-gtk

Wx
http://www.wxwidgets.org/
https://en.wikipedia.org/wiki/WxWidgets
https://github.com/dontpanic92/wxGo
https://github.com/JeroenD/wxGo

Qt
https://www.qt.io/
https://en.wikipedia.org/wiki/Qt_(software)
https://github.com/visualfc/goqt

Good to mention: Erlang switched to WX:
http://erlang.org/doc/man/wx.html

Of course selecting GUI Toolkit for production use needs:

  • licenses allowing both free and proprietary software to use it.
  • language bindings,idiomatic Go
  • Good Documentation
  • ...

I put emphasis on Concurrency model. So, which GUI Toolkit Concurrency model best fits to Golang Concurrency model?

  • 1
    The problem with mixing Go and GUIs is that most OSs require that the GUI stay on the same OS thread throughout the program's lifetime, which means there's going to be a runtime.LockOSThread() somewhere and there's going to be some function that schedules some code to run on the main thread that you'll also need to use (even in other languages). I'm still not sure what a fully goroutine/channel-friendly UI toolkit would look like or how it would handle the fact that handling an event should be seen as an atomic, blocking operation from the point of view of an event loop... – andlabs May 17 '16 at 6:30
  • So it will be nice if we use separate thread or even separate process (or program) and use Interoperability (RPC/OS pipe/…) or messages to communicate between them. – Amd May 17 '16 at 7:00
  • 1
    @Amd, I know it is possible with wx. You just send an event from worker thread to the main one and update the GUI in the handler. Can't speak for another toolkit, but I presume they all have something similar. But the question itself is too broad. Try to download each toolkit compile and try out. Then select one. – Igor May 17 '16 at 13:29
  • @Amd, in terms of licensing - its pretty free. You can link either dynamically or statically. You can do proprietary or open source. The only thing the license is asking - if you change the library, submit you change as a patch, It ing to python, perl, lua, erlang. It does have a pretty good documentation. – Igor May 17 '16 at 13:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.