如何在Fyne中设置固定大小Label?点击按钮后阻止其自动调整
在Fyne中创建固定大小的Label并阻止文本修改后自动调整尺寸
Fyne组件默认会根据内容自动调整尺寸,要让Label保持固定大小,有两种实用方案:
方案1:直接设置Label的最小/最大尺寸
通过给Label设置相同的MinSize和MaxSize,强制其尺寸固定,不受内容变化影响:
func main() { a := app.New() w := a.NewWindow("Fyne Demo") label1 := widget.NewLabel("Hello Fyne\n\nline\n\nline\n\nline\n\n\n\nline") // 定义固定尺寸 fixedSize := fyne.NewSize(200, 150) label1.SetMinSize(fixedSize) label1.SetMaxSize(fixedSize) // 可选:开启自动换行,避免内容超出被截断 label1.Wrap = fyne.TextWrapWord label2 := widget.NewLabel("Text") edit1 := widget.NewEntry() btn1 := widget.NewButton("Run", func() { label1.SetText("Hello World") }) container := container.NewVBox(label1, label2, edit1, btn1) w.SetContent(container) w.Resize(fyne.NewSize(300,400)) w.ShowAndRun() }
方案2:用固定尺寸容器包裹Label
使用container.NewFixedSize创建固定尺寸的容器,将Label放入其中,容器会限制Label的显示尺寸:
func main() { a := app.New() w := a.NewWindow("Fyne Demo") label1 := widget.NewLabel("Hello Fyne\n\nline\n\nline\n\nline\n\n\n\nline") // 开启自动换行(可选) label1.Wrap = fyne.TextWrapWord // 创建固定尺寸容器包裹Label fixedLabelContainer := container.NewFixedSize(200, 150, label1) label2 := widget.NewLabel("Text") edit1 := widget.NewEntry() btn1 := widget.NewButton("Run", func() { label1.SetText("Hello World") }) // VBox中添加固定尺寸容器而非原Label container := container.NewVBox(fixedLabelContainer, label2, edit1, btn1) w.SetContent(container) w.Resize(fyne.NewSize(300,400)) w.ShowAndRun() }
两种方案都能实现固定Label尺寸的效果,方案1直接控制Label本身,方案2通过容器隔离,可根据实际场景选择。
内容的提问来源于stack exchange,提问作者Hotery
相关产品推荐
相关产品推荐

