如何为widget设置自定义宽度,实现表单非均等列占比布局
你可以使用Fyne自带的带权重Grid布局实现需求,你之前遇到Grid均分宽度的问题是因为默认所有列权重相等,只要调整列权重参数即可:
实现逻辑
- 给checkbox所在的第一列设置权重为
0,这一列宽度会自动适配控件本身的最小宽度,保持你要的原有大小 - 给后面两个输入框所在的列分别设置权重为
1,剩余空白空间会按1:1比例分配给这两列,正好各占50%
示例代码
import "fyne.io/fyne/v2/layout" // 原有三个列容器的定义不需要改动 checks := container.NewVBox(c1, c2) names := container.NewVBox(n1, n2) values := container.NewVBox(v1, v2) // 初始化带权重的Grid布局,第一个参数是行权重(设为nil即可自适应行高),第二个参数是列权重 gridLayout := layout.NewGridLayoutWithWeights(nil, []float32{0, 1, 1}) win := container.New(gridLayout, checks, names, values)
如果你的表单行需要单独控制样式,也可以逐行使用上述带权重的Grid布局,再把所有行放入VBox容器中,对齐效果会更一致。
内容的提问来源于stack exchange,提问作者Sajan
相关产品推荐
相关产品推荐

