You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在基于Fyne的Go应用中实现Entry占满空间、Button缩至最小?

在Fyne框架中实现Entry占满空间、Button最小化的内联表单

要实现这个需求,核心是利用Fyne的HBox布局组件,并通过设置组件的Expand属性控制空间分配:

  • 用container.NewHBox创建水平容器,将Entry和Button放入其中
  • 给Entry设置SetExpand(true),让它占用容器内所有剩余水平空间
  • Button保持默认的Expand=false,仅占用自身最小显示尺寸所需的空间

以下是完整可运行代码示例:

package main

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

func main() {
	myApp := app.New()
	myWindow := myApp.NewWindow("内联表单")

	// 初始化输入框与按钮
	input := widget.NewEntry()
	submitBtn := widget.NewButton("提交", func() {
		// 此处添加按钮点击的处理逻辑
	})

	// 让输入框占用所有可用水平空间
	input.SetExpand(true)

	// 用水平容器排列组件
	content := container.NewHBox(input, submitBtn)

	myWindow.SetContent(content)
	myWindow.Resize(fyne.NewSize(400, 50)) // 设置初始窗口大小
	myWindow.ShowAndRun()
}

关键说明

  • HBox布局会按水平方向依次排列子组件,当组件的Expand为true时,会自动填充容器中未被其他组件占用的剩余空间
  • Button默认Expand属性为false,无需额外设置,会自适应自身文本内容的最小尺寸
  • 调整窗口大小时,Entry会自动拉伸填满水平空间,Button尺寸保持不变

内容的提问来源于stack exchange,提问作者jmaia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:22:43