Maison  >  Article  >  développement back-end  >  golang fyne gui ne peut pas redimensionner la liste

golang fyne gui ne peut pas redimensionner la liste

PHPz
PHPzavant
2024-02-05 23:45:03809parcourir

golang fyne gui 无法调整列表大小

Contenu de la question

J'essaie de redimensionner cette (liste) car elle n'affiche qu'une seule ligne et la seconde où je la vois, elle doit faire défiler vers le bas, je veux afficher plusieurs lignes, voici le 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()

Existe-t-il d'autres bibliothèques Golang pour l'interface graphique ? Parce qu’il semble que la plupart d’entre eux sont obsolètes, n’est-ce pas ? Cependant, j'ai vraiment besoin de quelque chose de plus simple pour créer une interface graphique comme


Correct Answer


En réalité, les widgets sont placés dans un conteneur, et ce conteneur a généralement une mise en page. Si vous configurez cela, votre appel manuel à Resize sera remplacé par la mise en page sélectionnée. L'utilisation de VBox fait exactement cela, car son algorithme veut garder chaque élément aussi court que possible. Utilisez plutôt des bordures, avec le titre en haut et la liste occupant l'espace restant.

Les objets dans Fyne remplissent toujours l'espace qui leur est alloué, mais pour lui faire faire ce que vous voulez, il est important de choisir le bon conteneur/mise en page. https://www.php.cn/link/4d6ce445727ef59cc07abb95d3e4a1d4

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer