前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fyne-Widget

Fyne-Widget

作者头像
TomatoCool
发布2023-09-01 19:08:07
2820
发布2023-09-01 19:08:07
举报
文章被收录于专栏:TomatoCool

软件包widget定义了许多小部件

代码语言:javascript
复制
import "fyne.io/fyne/v2/widget"

Accordion 下拉框

定义

代码语言:javascript
复制
type Accordion struct {
    BaseWidget
    //  项目
Items     []*AccordionItem
    //  是否同时打开多个项目
    MultiOpen bool
}

示例

代码语言:javascript
复制
package main

import (
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/canvas"
    "fyne.io/fyne/v2/widget"
    "image/color"
    "strconv"
)

func main() {
    App := app.New()
    Window := App.NewWindow("TabContainer Widget")

    a1 := widget.NewAccordion()
    for i := 0; i < 3; i++ {
        a3 := widget.NewAccordion()
        for j := 0; j < 4; j++ {
            s := strconv.Itoa(i) + strconv.Itoa(j)
            a3.Append(widget.NewAccordionItem(s, canvas.NewText(s, color.White)))
        }
        a2 := widget.NewAccordionItem(strconv.Itoa(i), a3)
        a1.Append(a2)
    }

    Window.SetContent(a1)
    Window.ShowAndRun()
}
demoWidget1.png
demoWidget1.png

Button 按钮

定义

代码语言:javascript
复制
type Button struct {
    DisableableWidget
    //  按钮的文本或图标
    Text string
    Icon fyne.Resource
    //  按钮突出程度
    Importance    ButtonImportance
    //  按钮对齐方式
    Alignment     ButtonAlign
    //  图标位置
    IconPlacement ButtonIconPlacement
    //  按钮绑定的函数
    OnTapped func() `json:"-"`
}

示例

代码语言:javascript
复制
package main

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

func main() {
    App := app.New()
    Window := App.NewWindow("TabContainer Widget")

    l := widget.NewLabel("hello")
    b := widget.NewButton("world", func() {
        l.Text = "world"
        l.Refresh()
    })

    box := container.NewVBox()
    box.Add(l)
    box.Add(b)

    Window.SetContent(box)
    Window.ShowAndRun()
}
demoWidget2.png
demoWidget2.png

Card 卡片

定义

代码语言:javascript
复制
type Card struct {
    BaseWidget
    //  标题
    Title, Subtitle string
    //  图片
    Image           *canvas.Image
    //  内容
    Content         fyne.CanvasObject
}

示例

代码语言:javascript
复制
package main

import (
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/canvas"
    "fyne.io/fyne/v2/widget"
    "image/color"
)

func main() {
    App := app.New()
    Window := App.NewWindow("TabContainer Widget")

    c := widget.NewCard("Hello", "World", canvas.NewCircle(color.White))

    Window.SetContent(c)
    Window.ShowAndRun()
}
demoWidget3.png
demoWidget3.png

Check 选择框

定义

代码语言:javascript
复制
type Check struct {
    DisableableWidget
    //  文本
    Text    string
    //  当前选择状态
    Checked bool
    //  触发时的函数
    OnChanged func(bool) `json:"-"`
}

示例

代码语言:javascript
复制
package main

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

func main() {
    App := app.New()
    Window := App.NewWindow("TabContainer Widget")

    l := widget.NewLabel("Hello")
    c := widget.NewCheck("World", func(b bool) {
        if b {
            l.Text = "World"
            l.Refresh()
        } else {
            l.Text = "Hello"
            l.Refresh()
        }
    })
    box := container.NewVBox()
    box.Add(l)
    box.Add(c)

    Window.SetContent(box)
    Window.ShowAndRun()
}
demoWidget4.png
demoWidget4.png

CheckGroup 多选框

定义

代码语言:javascript
复制
type CheckGroup struct {
    DisableableWidget
    //  选项是否水平排列
    Horizontal bool
    //  是否至少选择一个
    Required   bool
    //  触发时的函数,传入被选择字符串的列表
    OnChanged  func([]string) `json:"-"`
    //  选项列表
    Options    []string
    //  被选择字符串的列表
    Selected   []string
}

示例

代码语言:javascript
复制
package main

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

func main() {
    App := app.New()
    Window := App.NewWindow("TabContainer Widget")

    l := widget.NewLabel("")
    ss := []string{"A", "B", "C"}
    c := widget.NewCheckGroup(ss, func(s []string) {
        l.Text = ""
        for _, i := range s {
            l.Text += i
        }
        l.Refresh()
    })
    box := container.NewVBox()
    box.Add(l)
    box.Add(c)

    Window.SetContent(box)
    Window.ShowAndRun()
}
demoWidget5.png
demoWidget5.png

Entry 输入框

定义

代码语言:javascript
复制
type Entry struct {
    DisableableWidget
    //  文本
    Text string
    //  文本样式
    TextStyle   fyne.TextStyle

    PlaceHolder string
    //  触发函数
    OnChanged   func(string) `json:"-"`
    OnSubmitted func(string) `json:"-"`
    //  输入框类型
    Password    bool
    MultiLine   bool
    //  其它参数
    Wrapping    fyne.TextWrap
    Validator fyne.StringValidator `json:"-"`
    CursorRow, CursorColumn int
    OnCursorChanged         func() `json:"-"`
    ActionItem fyne.CanvasObject `json:"-"`
}

示例

代码语言:javascript
复制
package main

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

func main() {
    App := app.New()
    Window := App.NewWindow("TabContainer Widget")

    l := widget.NewLabel("")
    e := widget.NewEntry()
    e.OnChanged = func(s string) {
        l.Text = e.Text
        l.Refresh()
    }
    box := container.NewVBox()
    box.Add(l)
    box.Add(e)

    Window.SetContent(box)
    Window.ShowAndRun()
}
demoWidget6.png
demoWidget6.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Accordion 下拉框
    • 定义
      • 示例
      • Button 按钮
        • 定义
          • 示例
          • Card 卡片
            • 定义
              • 示例
              • Check 选择框
                • 定义
                  • 示例
                  • CheckGroup 多选框
                    • 定义
                      • 示例
                      • Entry 输入框
                        • 定义
                          • 示例
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档