[go] Go 언어의 GUI 프로그래밍

Go 언어(또는 Golang)는 빠르고 신뢰성 있는 시스템을 구축하는 데 매우 유용한 도구입니다. 그러나 오랫동안 Go 언어에서 GUI 프로그래밍은 다소 어려운 면이 있었습니다. 그러나 최근에는 Go 언어로 GUI 애플리케이션을 작성하는 다양한 방법들이 등장하여 이제는 간단하게 GUI 애플리케이션을 개발할 수 있게 되었습니다. 이번 포스트에서는 Go 언어로 간단한 GUI 애플리케이션을 작성하는데 사용되는 몇 가지 방법을 살펴보겠습니다.

목차

  1. Fyne
  2. ui
  3. walk

Fyne

Fyne은 Go 언어로 작성된 강력한 GUI 툴킷입니다. Fyne은 크로스 플랫폼이기 때문에 Windows, macOS, Linux에 쉽게 사용할 수 있습니다. 또한, Fyne은 사용하기 쉽고, 빠르게 개발할 수 있으며, 애플리케이션을 적절하게 스케일링하는 등 다양한 기능을 제공합니다. Fyne으로 GUI 애플리케이션을 개발하려면 공식 웹사이트에서 설치 및 사용 방법을 찾을 수 있습니다.

package main

import (
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

func main() {
	myApp := app.New()
	myWindow := myApp.NewWindow("Hello")

	myWindow.SetContent(container.NewVBox(
		widget.NewLabel("Hello Fyne!"),
		widget.NewButton("Quit", func() {
			myApp.Quit()
		}),
	))

	myWindow.ShowAndRun()
}

ui

ui는 Go 언어에서 작동하는 크로스 플랫폼 GUI 툴킷입니다. ui는 C++로 작성된 가벼운 GUI 라이브러리인 libui를 기반으로 하고 있으며, Windows, macOS, Linux에 사용할 수 있습니다.

package main

import (
	"github.com/andlabs/ui"
)

func main() {
	err := ui.Main(func() {
		input := ui.NewEntry()
		button := ui.NewButton("Click Me")
		label := ui.NewLabel("Hello")

		box := ui.NewVerticalBox()
		box.Append(input, false)
		box.Append(button, false)
		box.Append(label, false)

		window := ui.NewWindow("Hello", 200, 100, false)
		window.SetChild(box)

		button.OnClicked(func(*ui.Button) {
			label.SetText("Hello " + input.Text())
		})

		window.OnClosing(func(*ui.Window) bool {
			ui.Quit()
			return true
		})

		window.Show()
	})

	if err != nil {
		panic(err)
	}
}

walk

walk은 Go 언어용 Windows 플랫폼 전용 GUI 툴킷입니다. walk는 Windows 전용 GUI 애플리케이션을 개발할 때 사용할 수 있습니다. walk는 Windows 시스템에서 자연스럽게 통합되어 기존 Windows 응용프로그램과 같은 사용자 경험을 제공합니다.

package main

import (
	"github.com/lxn/walk"
	. "github.com/lxn/walk/declarative"
)

func main() {
	var inTE, outTE *walk.TextEdit

	MainWindow{
		Title:   "Example",
		MinSize: Size{300, 200},
		Layout:  VBox{},
		Children: []Widget{
			TextEdit{AssignTo: &inTE},
			TextEdit{AssignTo: &outTE, ReadOnly: true},
			PushButton{
				Text: "Run",
				OnClicked: func() {
					outTE.SetText(inTE.Text())
				},
			},
		},
	}.Run()
}

여기서는 Go 언어로 GUI 애플리케이션을 개발하는 몇 가지 방법을 살펴보았습니다. 이 중에서 가장 적합한 도구를 선택하여 GUI 프로그래밍에 도전해 보세요!