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

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

PHPz
Freigeben: 2024-02-05 23:45:03
nach vorne
945 Leute haben es durchsucht

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()
Nach dem Login kopieren

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!

Verwandte Etiketten:
lsp
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage