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
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!