fyne中widget.NewSelect选择框宽度怎么调大
尝试了各种布局,始终不起作用
如下:
result := binding.NewString()
result.Set("init")
url := binding.NewString()
params := binding.NewString()
params.Set("{\"aa\":\"11\",\"bb\":22}")
myApp := app.New()
myWindow := myApp.NewWindow("Choice Widgets")
urlText := widget.NewLabel("url地址:")
inp := widget.NewEntryWithData(params)
inp.SetPlaceHolder("请输入参数")
text := widget.NewMultiLineEntry()
text.SetPlaceHolder("结果")
but := widget.NewButton("Send", func() {
s, _ := url.Get()
s2, _ := params.Get()
text.SetText(post(s,s2))
})
text.TextStyle.Bold = true
text.Wrapping=fyne.TextWrapBreak
sel := widget.NewSelect([]string{"http://127.0.0.1:9067/test/1", "http://127.0.0.1:9067/test/2"}, func(value string) {
url.Set(value)
})
box1 := container.New(layout.NewMaxLayout(),sel)
box1.Resize(fyne.NewSize(200,box1.MinSize().Height))
log.Println(box1.Size())
box2 := container.New(layout.NewHBoxLayout(),urlText,box1)
log.Println(box2.Size())
myWindow.SetContent(container.NewVBox(box2,inp,but,text))
myWindow.Resize(fyne.NewSize(500,500))
myWindow.ShowAndRun()
打印的size:
{200 26.828125}
{210.5 30.828125}
你可以使用 widget.NewSelectWithData
方法创建一个带有数据绑定的选择框,然后使用 widget.NewFormItem
方法将其包装在一个表单项中,最后将表单项添加到你的布局中。这样可以使选择框的宽度自适应表单项的宽度,从而达到调整选择框宽度的目的。以下是示例代码:
result := binding.NewString()
result.Set("init")
url := binding.NewString()
params := binding.NewString()
params.Set("{\"aa\":\"11\",\"bb\":22}")
myApp := app.New()
myWindow := myApp.NewWindow("Choice Widgets")
urlText := widget.NewLabel("url地址:")
inp := widget.NewEntryWithData(params)
inp.SetPlaceHolder("请输入参数")
text := widget.NewMultiLineEntry()
text.SetPlaceHolder("结果")
but := widget.NewButton("Send", func() {
s, _ := url.Get()
s2, _ := params.Get()
text.SetText(post(s,s2))
})
text.TextStyle.Bold = true
text.Wrapping=fyne.TextWrapBreak
sel := widget.NewSelectWithData([]string{"http://127.0.0.1:9067/test/1", "http://127.0.0.1:9067/test/2"}, url)
selFormItem := widget.NewFormItem("选择地址:", sel)
log.Println(selFormItem.MinSize())
log.Println(selFormItem.Content.MinSize())
log.Println(selFormItem.Content.(*widget.Select).Size())
myWindow.SetContent(container.NewVBox(
container.New(layout.NewHBoxLayout(), urlText, selFormItem),
inp,
but,
text,
))
myWindow.Resize(fyne.NewSize(500,500))
myWindow.ShowAndRun()
注意,这里使用了 widget.NewFormItem
方法将选择框包装在一个表单项中,这样可以使选择框的宽度自适应表单项的宽度。同时,你可以通过 selFormItem.MinSize()
、selFormItem.Content.MinSize()
和 selFormItem.Content.(*widget.Select).Size()
等方法来查看表单项和选择框的最小大小和实际大小。