반응형
Fyne를 이용하여 GUI에서 테이블을 구현해 보았습니다.
아직 익숙하지 않아서 굴러다니는 소스 복사해다가 몇가지 위치/사이즈만 변형시켜보는 수준이지만,
필요하신 분이 있을지도 모른다는 희망에 올려봅니다.
package main import ( "fmt" "fyne.io/fyne" "fyne.io/fyne/app" "fyne.io/fyne/layout" //"fyne.io/fyne/theme" "fyne.io/fyne/widget" ) func main() { app := app.New() //app 선언 //app.Settings().SetTheme(theme.LightTheme()) //밝은 테마 설정 w := app.NewWindow("Hello") //window 선언 entry := widget.NewEntry() entry.SetPlaceHolder("database@databaseservr.com:5000/orcl") w.SetContent( widget.NewVBox( widget.NewLabel("Databas Address"), //레이블 widget.NewHBox( entry, //엔트리 (문자열 입력) widget.NewButton("Go", func() { //종료버튼 app.Quit() }), ), makeTable( //makeTable함수를 사용하여 테이블 선언 및 변수 입력 []string{"Foo", "Bar", "Baz", "My_a", "My_b", "My_c"}, //칼럼(헤더) [][]string{{"1", "2", "3"}, {"4", "5", "6"}}, //데이터 ), ), ) w.Resize(fyne.NewSize(600, 600)) w.ShowAndRun() } func makeTable(headings []string, rows [][]string) *widget.Box { columns := rowsToColumns(headings, rows) objects := make([]fyne.CanvasObject, len(columns)) for k, col := range columns { box := widget.NewVBox(widget.NewLabelWithStyle(headings[k], fyne.TextAlignLeading, fyne.TextStyle{Bold: true})) for _, val := range col { box.Append(widget.NewLabel(val)) } objects[k] = box } return widget.NewVBox( fyne.NewContainerWithLayout(layout.NewGridLayout(len(columns)), objects...), ) } func rowsToColumns(headings []string, rows [][]string) [][]string { columns := make([][]string, len(headings)) for _, row := range rows { for colK := range row { columns[colK] = append(columns[colK], row[colK]) } } return columns }
결과는 아래와 같이...
다음엔 쫌더 이쁘게 만들어봅시당...ㅋㅋㅋ
그럼 이만~~~
반응형
'Programming > Golang' 카테고리의 다른 글
go언어 윈도우즈용 실행파일 아이콘 만들기-리소스해커 (0) | 2020.04.08 |
---|---|
go언어 fyne layout 예제 (4) | 2020.04.07 |
go언어 fyne toolkit으로 gui 프로그래밍 하기 (2) | 2020.04.05 |
andlabs/ui Table예제 코드 (4) | 2020.03.30 |
windows에 go언어 설치하기 (2) | 2020.03.29 |