반응형

Fyne tutorial에 있는 timer 예제입니다.

 

1. main.go

package main

import (
	"time"

	"fyne.io/fyne/app"
	"fyne.io/fyne/widget"
)

func showTime(clock *widget.Label) {
	formatted := time.Now().Format("03:04:05")	//현재시각을 포멧에 따라 출력한다.
	clock.SetText(formatted)
}

func main() {
	a := app.New()
	w := a.NewWindow("Clock")

	clock := widget.NewLabel("")
	showTime(clock)

	w.SetContent(clock)
	go func() {
		t := time.NewTicker(time.Second) //매 초마다 메시지(시간)를 전송하는 채널 t생성 

		for range t.C {			//채널 C로 time값을 받아 순서대로 처리한다. 
			showTime(clock)		//매 초마다 시간을 출력한다. 
		}
	}()

	w.ShowAndRun()	//앱을 보여주고 실행한다. 
}
 

 

<결과>

 

 

~~끝~~

 
반응형
반응형

Fyne를 이용해 GUI를 만들던 중 한글 출력이 안된다는 것을 뒤늦게 알게 되었네요.(아래 화면 참조). 오늘은 한글 설정하는 방법에 대해 알아보겠습니다. 샘플로 간단한 메모장 앱을 만들어보겠습니다.

 

 

1. main.go

위 샘플로 만든 앱의 코드는 아래와 같습니다.

package main

import (
	"fmt"
	"image/color"
	_ "unicode/utf8"

	"fyne.io/fyne"
	"fyne.io/fyne/app"
	"fyne.io/fyne/canvas"
	"fyne.io/fyne/layout"
	"fyne.io/fyne/theme"
	"fyne.io/fyne/widget"
)

func main() {
	f := app.New()
	//f.Settings().SetTheme(theme.LightTheme())
	f.Settings().SetTheme(theme.DarkTheme())
	w := f.NewWindow("")

	//상단에 넣을 위젯 및 레이아웃 - NewFormLayout
	qry := widget.NewEntry()
	btn_go := widget.NewButton("New Memo", New_btn)

	text := canvas.NewText("Text Object", color.White)
	text.Alignment = fyne.TextAlignTrailing
	text.TextStyle = fyne.TextStyle{Italic: true}

	ret := fyne.NewContainerWithLayout(layout.NewFormLayout())
	ret.AddObject(btn_go)
	ret.AddObject(qry)

	//하단에 넣을 위젯 및 전체 레이아웃 구성 - NewBorderLayout
	label2 := widget.NewLabel("Simple Memo")
	labox2 := fyne.NewContainerWithLayout(layout.NewCenterLayout(), label2)

	b1 := widget.NewButton("Go1", func() { fmt.Println("Go1 Button") })
	b1.ExtendBaseWidget(b1)

	b2 := widget.NewButton("Go2", func() { fmt.Println("Go2 Button") })
	b2.ExtendBaseWidget(b2)

	out_entry := widget.NewMultiLineEntry()
	out_entry.SetPlaceHolder("결과...")
	out_entry.ExtendBaseWidget(out_entry)

	frm := fyne.NewContainerWithLayout(layout.NewBorderLayout(ret, labox2, nil, nil)) //상, 하, 좌(없음), 우(없음)
	frm.AddObject(ret)                                                                //상단
	frm.AddObject(labox2)                                                             //하단
	frm.AddObject(out_entry)                                                          //좌-우가 없으므로 5번째에(center) 추가됨

	w.SetContent(frm)
	w.Resize(fyne.Size{Height: 640, Width: 480})
	w.ShowAndRun()

}

2. 한글 폰트파일 다운로드

네이버에서 '나눔고딕 다운' 으로 검색하면 무료로 다운받을 수 있는 폰트 링크들이 나타납니다.

 

 

 

기본이 되는 폰트를 다운받아서 현재의 프로젝트 폴더에 위치시킵니다.

 

 

 

3. IDELite 환경설정

다음으로 환경설정에 변수를 추가해주도록 하겠습니다. Tools -> Edit current environment 메뉴로 가서..

 

 

FYNE_FONT=NanumGothic.ttf 라고 한줄을 추가해 넣습니다.

 

 

 

비교적 간단하네요. 이렇게 설정하고 실행해봅시다.

 

 

네,,,잘~ 나옵니다.

그럼 모두 건승하세요~

 

~~끝~~

반응형

+ Recent posts