fyne中widget.NewSelect选择框宽度怎么调大

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() 等方法来查看表单项和选择框的最小大小和实际大小。