Heim  >  Artikel  >  Backend-Entwicklung  >  Golang Fyne GUI kann die Größe der Liste nicht ändern

Golang Fyne GUI kann die Größe der Liste nicht ändern

PHPz
PHPznach vorne
2024-02-05 23:45:03809Durchsuche

golang fyne gui 无法调整列表大小

Frageninhalt

Ich versuche, die Größe dieser (Liste) zu ändern, da sie nur eine Zeile anzeigt und in der zweiten, in der ich sie sehe, nach unten scrollen muss. Ich möchte mehrere Zeilen anzeigen, hier ist der Code:-

"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()

Gibt es noch andere Golang-Bibliotheken für GUI? Denn es sieht so aus, als wären die meisten davon veraltet, oder? Allerdings brauche ich wirklich etwas Einfacheres, um eine GUI zu erstellen, wie


Richtige Antwort


In fyne werden Widgets in einen Container gelegt, und dieser Container hat normalerweise ein Layout. Wenn Sie dies einrichten, wird Ihr manueller Aufruf von Resize durch das ausgewählte Layout überschrieben. Die Verwendung von VBox erfüllt genau dies, da der Algorithmus jedes Element so kurz wie möglich halten möchte. Verwenden Sie stattdessen Rahmen, wobei der Titel oben steht und die Liste den verbleibenden Platz einnimmt.

Objekte in Fyne füllen immer den ihnen zugewiesenen Platz aus, aber damit es das tut, was Sie wollen, ist es wichtig, den richtigen Container/das richtige Layout zu wählen. https://www.php.cn/link/4d6ce445727ef59cc07abb95d3e4a1d4

Das obige ist der detaillierte Inhalt vonGolang Fyne GUI kann die Größe der Liste nicht ändern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen