GIU 学习 教程
Hello World
package main
import (
g "github.com/AllenDang/giu"
)
func loop() {
g.SingleWindow().Layout(
g.Label("Hello world from giu"),
)
}
func main() {
wnd := g.NewMasterWindow("Hello world", 400, 200, 0)
wnd.Run(loop)
}
Layout 布局
单窗口布局时,只需要在 g.SingleWindow().Layout() 中布局
Layout 分割
SplitLayout(SplitDirection,sashPos,layout1,layout2)
Widget 部件
- 菜单栏
g.MenuBar().Layout(
g.Menu("File").Layout(
g.MenuItem("Open").Shortcut("Ctrl+O(未绑定)").OnClick(func(){}),
g.Menu("Save as ...").Layout(
g.MenuItem("CSV file"),
),
),
),
-
标签(单行文本框) Lable
g.Lable(text)可链式到其他widget -
列表项文本
g.BulletText(text) -
多行文本框
g.Lable(str).Wrapped(true) -
可选文本框
g.Selectable(text) -
给 Lable 加 Event 事件 下一行
g.Event().OnClick(func).OnHover(func) -
单行 行内多个Widget
g.Row(W1, W2...) -
输入文本框
g.InputText(&str) -
多行输入框
g.InputTextMultiline(&str).Size(g.Auto, g.Auto) -
检测输入文本框Active
g.Event().OnActivate/OnDeactivate -
按钮
g.Button("B1").OnClick() -
Widget选中提示 下方加入
g.Tooltip(str)支持 .Layout 多行提示 -
Widget选中提示 提示框
g.Tooltip(str).To(W1, W2...) -
日期选择框
g.DatePicker("Date", &str) -
Checkbox 勾选框
g.Checkbox() -
空白栏
d.Dummy(width, height) -
Radio 单选框
g.RadioButton(text, bool) -
滑块
g.DragInt(text,&int,min,max) / SliderInt/VSliderInt(&int,min,max) -
多选框
g.Combo(text, items[item], items, &item) -
颜色选择框
g.ColorEdit(text, &color) -
箭头
g.ArrowButton(directions) -
弹出提示框
g.PopupModal(name).Layout()使用g.OpenPopup(name)弹出 -
右键菜单
g.ContextMenu().Layout()只对上一行的Widget有效 -
横向选择栏
g.TabBar().TabItems(g.TabItem(text).Layout()...) -
表格
g.Table().Columns(g.TableColumn(text)...).Rows(g.TableRow(Widget)...) -
树/树表格
g.TreeNode() / g.TreeTable() -
自定义Widget
g.Custom(func)
ID
指定 ID W().ID(ID)
ID 不可重复,GIU默认会自动生成ID
多线程
func refresh() {
ticker := time.NewTicker(time.Second * 1)
for {
// update variables
giu.Update()
<-ticker.C
}
}
func main() {
go refresh()
...
字体
// 全局字体
g.Context.FontAtlas.SetDefaultFont("Arial", 24)
// 自定义字体
bigFont = g.Context.FontAtlas.AddFont("Menlo.ttc", 24)
bigFont *g.FontInfo
g.Label("Title").Font(bigFont)
Style
g.Style().SetColor(g.StyleColorText, color.RGBA{0x36, 0x74, 0xD5, 255}).Widget
对齐 Align
g.Align(g.AlignCenter).To(Widget1,...)
g.AlignManually(g.AlignCenter,g.Button("200 width").Size(200, 30),200, false)