首頁  >  文章  >  後端開發  >  golang fyne gui 無法調整列表大小

golang fyne gui 無法調整列表大小

PHPz
PHPz轉載
2024-02-05 23:45:03867瀏覽

golang fyne gui 无法调整列表大小

問題內容

我正在嘗試調整此(清單)的大小,因為它只顯示一行,第二個看到它需要向下捲動我想顯示多行,這是程式碼:-

"fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/container"
    "fyne.io/fyne/v2/widget"
type CustomList struct {
    Header fyne.CanvasObject
    List   *widget.List
}
    a := app.New()

    // Create a new window
    w := a.NewWindow("Resources Manager")

    // Create a list with five columns
    list = widget.NewList(
        func() int {
            return len(clientInfos)
        },
        func() fyne.CanvasObject {
            return container.NewHBox(widget.NewIcon(nil), widget.NewLabel(""))
        },
        func(index int, obj fyne.CanvasObject) {
            c := obj.(*fyne.Container)
            icon := c.Objects[0].(*widget.Icon)
            label := c.Objects[1].(*widget.Label)

            // load the image resource
            img, err := fyne.LoadResourceFromPath(clientInfos[index].Country)
            if err != nil {
                fmt.Println("Failed to load image", err)
                return
            }

            // set image to icon and text to label
            icon.SetResource(img)
            label.SetText(fmt.Sprintf("%s | %s | %s | %s | %s",
                clientInfos[index].AppName,
                clientInfos[index].Version,
                clientInfos[index].kerenl,
                clientInfos[index].Price,
                clientInfos[index].Size,
            ))
            label.TextStyle = fyne.TextStyle{Bold: true, Italic: false, Monospace: true}
        },
    )
    list.OnSelected = func(id int) {
        selectedID = id
    }
    customList := &CustomList{
        Header: widget.NewLabel("Icon | AppName | kerenl | Price | Size | Status"),
        List:   list,
    }
    customList.List.Resize(fyne.Size{Height: 434})
    // Create a container for the buttons
    buttonContainer := container.NewVBox()

    buttonContainer.Add(widget.NewButton("Install", func() {
        // Handle button click
    }))
    buttonContainer.Add(widget.NewButton("download", func() {
        // Handle button click
    }))
    buttonContainer.Add(widget.NewButton("Upgrade", func() {
        // Handle button click
    }))
    buttonContainer.Add(widget.NewButton("Refresh", func() {
            list.Refresh()

        // Handle button click
    }))
    buttonContainer.Resize(fyne.NewSize(230, 300))
    vbox := container.NewVBox(
        customList.Header,
        customList.List,
    )
    vbox.Resize(fyne.NewSize(600, 320))


    
    horizontalSplit := container.NewHSplit(vbox, buttonContainer)
    horizontalSplit.SetOffset(0.8)

    content := container.NewVBox(horizontalSplit, textArea)

    w.SetContent(content)

    w.Resize(fyne.NewSize(800, 270))

    w.ShowAndRun()

還有其他用於 gui 的 Golang 函式庫嗎?因為看起來大多數都已經過時了,對嗎?然而,我真的需要一些更簡單的東西來建立一個GUI,例如


正確答案


#在fyne 中,小部件被放入容器中,並且該容器通常具有佈局。如果您進行了此設置,那麼您對 Resize 的手動呼叫將被所選佈局覆蓋。 VBox 的使用正是這樣做的,因為它的演算法希望使每個項目盡可能短。 請改用邊框,標題位於頂部,清單佔用剩餘空間。

Fyne 中的物件總是填滿分配給它們的空間,但要使其執行您想要的操作,選擇正確的容器/佈局非常重要。 https://www.php.cn/link/4d6ce445727ef59cc07abb95d3e4a1d4

#

以上是golang fyne gui 無法調整列表大小的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除