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

Fyne-Container

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

包container提供用于布局和组织应用程序的容器。

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

普通容器

获取Container实例

使用New函数获取一个新的Container实例,其中包含指定的CanvasObjects,这些对象将根据指定的Layout进行布局。

代码语言:javascript
复制
func New(layout fyne.Layout, objects ...fyne.CanvasObject) *fyne.Container

还可以使用封装后的函数返回指定布局的容器。

函数名

作用

NewGridWithColumns

网格布局,指定列数

NewGridWithRows

网格布局,指定行数

NewGridWrap

网格布局,指定元素大小

NewHBox

水平布局,元素从左往右排列

NewMax

元素会尽可能的填满整个空间

NewPadded

元素按照标准大小填入

NewVBox

垂直布局,元素从上往下排列

NewWithoutLayout

没有布局

AppTabs 选项卡

定义

代码语言:javascript
复制
type AppTabs struct {
    widget.BaseWidget
    //  选项
    Items []*TabItem
    //  已启用,使用下面那个函数替代
    OnChanged    func(*TabItem)
    //  选项被选时的函数
    OnSelected   func(*TabItem)
    //  选项未选时的函数
    OnUnselected func(*TabItem)
}

示例

代码语言: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")

    l1 := widget.NewLabel("Hello")
    l2 := widget.NewLabel("World!")
    
    tabs := container.NewAppTabs(
        container.NewTabItem("Tab 1", l1),
        container.NewTabItem("Tab 2", l2),
    )
    //  改变选项卡位置(右边)
    tabs.SetTabLocation(container.TabLocationTrailing)

    Window.SetContent(tabs)
    Window.ShowAndRun()
}
demoContainer1.png
demoContainer1.png

DocTabs 选项卡

与AppTabs类似,但实现了更多的操作,类似与浏览器的标签

定义

代码语言:javascript
复制
type DocTabs struct {
    widget.BaseWidget
    //  选项
    Items []*TabItem
    //  选项函数
    CreateTab      func() *TabItem
    CloseIntercept func(*TabItem)
    OnClosed       func(*TabItem)
    OnSelected     func(*TabItem)
    OnUnselected   func(*TabItem)
}

示例

代码语言: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")

    l1 := widget.NewLabel("Hello")
    l2 := widget.NewLabel("World!")

    tabs := container.NewDocTabs(
        container.NewTabItem("Tab 1", l1),
        container.NewTabItem("Tab 2", l2),
    )

    Window.SetContent(tabs)
    Window.ShowAndRun()
}
demoContainer2.png
demoContainer2.png

Scroll 滚轮

定义

代码语言:javascript
复制
type Scroll = widget.Scroll

示例

代码语言:javascript
复制
package main

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

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

    box := container.NewVBox()
    for i := 0; i < 20; i++ {
        box.Add(canvas.NewText("hello", color.White))
    }
    
    scroll := container.NewScroll(box)
    Window.SetContent(scroll)
    
    Window.ShowAndRun()
}
demoContainer3.png
demoContainer3.png

Split 分割线

定义

代码语言:javascript
复制
type Split struct {
    widget.BaseWidget
    //  偏移量
    Offset     float64
    //  是否水平分割
    Horizontal bool
    //  左右两边的元素
    Leading    fyne.CanvasObject
    Trailing   fyne.CanvasObject
}

示例

代码语言: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 := container.NewVBox()
    l.Add(widget.NewButton("left", func() {}))

    r := container.NewVBox()
    r.Add(widget.NewButton("right", func() {}))

    s := container.NewHSplit(l, r)

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 普通容器
    • 获取Container实例
    • AppTabs 选项卡
      • 定义
        • 示例
        • DocTabs 选项卡
          • 定义
            • 示例
            • Scroll 滚轮
              • 定义
                • 示例
                • Split 分割线
                  • 定义
                    • 示例
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档