Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang fyne gui tidak boleh mengubah saiz senarai

golang fyne gui tidak boleh mengubah saiz senarai

PHPz
PHPzke hadapan
2024-02-05 23:45:03809semak imbas

golang fyne gui 无法调整列表大小

Kandungan soalan

Saya cuba mengubah saiz ini (senarai) kerana ia hanya memaparkan satu baris dan yang kedua saya nampak ia perlu tatal ke bawah Saya mahu memaparkan berbilang baris, berikut adalah kodnya:-

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

Adakah perpustakaan Golang lain untuk gui? Sebab nampaknya kebanyakannya sudah ketinggalan zaman kan? Walau bagaimanapun, saya benar-benar memerlukan sesuatu yang lebih mudah untuk membina GUI seperti


Jawapan Betul


In fyne, widget dimasukkan ke dalam bekas, dan bekas itu biasanya mempunyai reka letak. Jika anda menyediakannya, panggilan manual anda ke Resize akan ditindih oleh reka letak yang dipilih. Penggunaan VBox melakukan perkara ini, kerana algoritmanya mahu memastikan setiap item sesingkat mungkin. Gunakan sempadan sebaliknya, dengan tajuk di bahagian atas dan senarai mengambil ruang yang tinggal.

Objek dalam Fyne sentiasa memenuhi ruang yang diperuntukkan kepada mereka, tetapi untuk menjadikannya melakukan apa yang anda mahu, adalah penting untuk memilih bekas/susun atur yang betul. https://www.php.cn/link/4d6ce445727ef59cc07abb95d3e4a1d4

Atas ialah kandungan terperinci golang fyne gui tidak boleh mengubah saiz senarai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam