Родна UI библиотека за Go

Един от често срещаните въпроси за Go е дали има добра библиотека за потребителски интерфейс на различни платформи в Go. Като правило запитващите са били препращани към go-qml или andilabs/ui (обвързване с C-имплементации на естествения потребителски интерфейс за всяка платформа), но като цяло все още няма приличен проект за родния потребителски интерфейс Go. Онзи ден няколко разработчици от Google отвориха проекта gxui за света с отворен код, който има за цел да запълни нишата на родните UI библиотеки за Go.

Проектът все още е суров, но изглежда добре и обещаващо.

Нека да разгледаме отблизо.

библиотека

Адресът на проекта е github.com/google/gxui и ето едно чудесно README по свой начин:

Това е експериментален код и ще претърпи значителни промени. Чувствайте се свободни да играете с него, опитайте, но не се обезсърчавайте, ако API е значително преработен.

Засега кодът е без документи и определено не е "идиоматичен" Go. Той ще бъде силно рефакториран през следващите месеци.

Това не е официален продукт на Google, това е просто код, който случайно принадлежи на Google.

Съгласен съм, readme не е вдъхновяващ, но нека видим какво има в момента. След като свободно изучих и изпробвах примерите в директорията sample /, се опитах да напиша банален модален прозорец.

Звучи като GTK и Qt, нали? Според мен това е добре - за тези, които имат опит в работата с GTK/Qt, ще бъде по-лесно да разберат логиката на работа с библиотеката, а когато става въпрос за генератори на код за потребителския интерфейс, тогава също ще бъде възможно да следвате добре утъпкания път (може би дори ще бъде лесно да адаптирате Glade или Qt Designer за тази библиотека?).

Засега само OpenGL се използва за взаимодействие с графичната подсистема, но дизайнът на библиотеката позволява в бъдеще да добавя всеки друг изходен драйвер, дори AsciiArt, дори DirectX.

Резултатът изглежда така:

потребителски интерфейс

Все още не съм намерил как да направя правилното подравняване, преоразмеряване на приспособления или пренасочване при преоразмеряване на прозорец (въпреки че изглежда има функции за това). С шрифтовете досега също всичко е на минималното ниво.

Ето още няколко примера от източника:

Анимирана лента за напредъка.

родна

Многоъгълници
потребителски интерфейс

Панели, които могат да бъдат преоразмерени и превключващи раздели:
родна

Списъци
библиотека

Така че, който се интересува, опитайте, дайте своя принос, следвайте проекта.