第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 fyne-io 中制作具有不同對(duì)象類型的表格?

如何在 fyne-io 中制作具有不同對(duì)象類型的表格?

Go
搖曳的薔薇 2023-02-06 18:52:26
我使用 fyne-io 制作用戶界面。在表格中,我想要一些帶有超鏈接的單元格和其他帶有 Label 的單元格。我試過了,但沒用:package mainimport (    "fmt"    "fyne.io/fyne"    "fyne.io/fyne/app"    "fyne.io/fyne/layout"    "fyne.io/fyne/widget")func setDefaultColumnsWidth(table *widget.Table) {    table.SetColumnWidth(0, 130)    table.SetColumnWidth(1, 150)    table.SetColumnWidth(2, 160)    table.SetColumnWidth(3, 200)    table.SetColumnWidth(4, 400)    table.SetColumnWidth(5, 150)    table.SetColumnWidth(6, 250)    table.SetColumnWidth(7, 110)    table.SetColumnWidth(8, 80)}func main() {    application := app.New()    win := application.NewWindow("Test GUI")    data := [][]string{{"ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff"},        {"ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff"},        {"ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff", "ffffffffffffff"}}    tableData := widget.NewTable(        func() (int, int) {            return len(data), len(data[0])        },        func() fyne.CanvasObject {            label := widget.NewLabel("")            return label        },        func(i widget.TableCellID, o fyne.CanvasObject) {            switch o.(type) {            case *widget.Label:                label := o.(*widget.Label)                label.SetText(data[i.Row][i.Col])            case *widget.Hyperlink:                fmt.Println("Found Hyperlink")                hyperlink := o.(*widget.Hyperlink)                //  hyperlink.SetText(data[i.Row][i.Col])                hyperlink.SetText("aaaaaaa")            }        })}我能怎么做 ?我看到消息“fmt.Println("Found Hyperlink")”,但未顯示超鏈接。為什么 o.(type) 等于 *widget.Hyperlink 而超鏈接不顯示?
查看完整描述

3 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

看來問題是標(biāo)簽沒有被破壞并且與新創(chuàng)建的超鏈接重疊。我無法找到上述問題的解決方案,但提出了替代解決方案,因?yàn)閒yne API 處于開發(fā)階段,許多內(nèi)部功能無法訪問并且可能會(huì)更改解決方案可能會(huì)隨著時(shí)間的推移而更改并變得簡(jiǎn)單化。


package main


import (

  "image/color"


  "fyne.io/fyne/v2"

  "fyne.io/fyne/v2/app"

  "fyne.io/fyne/v2/layout"

  "fyne.io/fyne/v2/widget"

  "fyne.io/fyne/v2/canvas"

)


const HEIGHT float32 = 30


func setDefaultColumnsWidth(table *widget.Table) {

  colWidths := []float32{130, 150, 160, 200, 400, 150, 250, 110, 80}

  for idx, colWidth := range colWidths {

    table.SetColumnWidth(idx, colWidth)

  }

}


func main() {


  application := app.New()

  win := application.NewWindow("Test GUI")


  data := [][]fyne.CanvasObject{

    {widget.NewLabel("ffffffffffffff"), widget.NewHyperlink("TUTU", nil), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff")},

    {widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewHyperlink("ffffffffffffff", nil)},

    {widget.NewHyperlink("TUTU", nil), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff"), widget.NewLabel("ffffffffffffff")},

  }


  tableData := widget.NewTable(

    func() (int, int) {

      return len(data), len(data[0])

    },

    func() fyne.CanvasObject {

      c := fyne.NewContainerWithoutLayout()

      r := canvas.NewRectangle(color.White)

      r.SetMinSize(fyne.NewSize(0, HEIGHT))

      r.Resize(fyne.NewSize(0, HEIGHT))

      c.AddObject(r)

      return c

    },

    func(cell widget.TableCellID, o fyne.CanvasObject) {

      container := o.(*fyne.Container)

      var obj fyne.CanvasObject = data[cell.Row][cell.Col]

      container.AddObject(obj)

      container.Refresh()

  })


  setDefaultColumnsWidth(tableData)


  label := widget.NewLabel("My table :")

  button := widget.NewButton("Close", func() {

    application.Quit()

  })


  container := layout.NewBorderLayout(label, button, nil, nil)

  box := fyne.NewContainerWithLayout(container, label, tableData, button)

  win.SetContent(box)


  win.Resize(fyne.NewSize(1800, 400))

  win.ShowAndRun()


}

輸出: 在此處輸入圖像描述


查看完整回答
反對(duì) 回復(fù) 2023-02-06
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

我聯(lián)系了 Fyne Slack 小組,推薦的解決方案是將兩個(gè)元素封裝在一個(gè)容器中,并在更新回調(diào)函數(shù)中僅顯示所需的元素


創(chuàng)建單元回調(diào)函數(shù):


func() fyne.CanvasObject {

    label := widget.NewLabelWithStyle("", fyne.TextAlignLeading, fyne.TextStyle{})

    hyperlink := widget.NewHyperlink("", nil)

    hyperlink.Hide()

    return container.NewMax(label, hyperlink)

}

更新回調(diào)函數(shù):


func(i widget.TableCellID, o fyne.CanvasObject) {


    container := o.(*fyne.Container)

    label := container.Objects[0].(*widget.Label)

    hyperlink := container.Objects[1].(*widget.Hyperlink)


    switch i.Col {

    case 0:

    case 5:

        label.Hide()

        hyperlink.Hidden = false

        hyperlink.SetText("Hi!")

        hyperlink.SetURL(url.Parse("https://stackoverflow.com"))


    default:

        hyperlink.Hide()

        label.Hidden = false

        label.SetText("Hello")

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-02-06
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

關(guān)于如何使用container.NewMax和Table.SetColumnWidth創(chuàng)建更復(fù)雜的表,有更完整的文章。該示例逐步執(zhí)行此表的代碼:


在此處輸入圖像描述


兩個(gè)主要技巧是設(shè)置容器而不是單個(gè)小部件:


container.NewMax(widget.NewLabel("template11"), widget.NewIcon(nil))

然后在回調(diào)中適當(dāng)?shù)仉[藏或顯示項(xiàng)目:


l := o.(*fyne.Container).Objects[0].(*widget.Label)

i := o.(*fyne.Container).Objects[1].(*widget.Icon)

l.Show()

i.Hide()

switch id.Col {

case 2:

    l.Hide()

    i.Show()

    i.SetResource(getIcon(id.Row))

case 0:

    l.SetText("hostname")

}

在https://fynelabs.com/2022/12/30/building-complex-tables-with-fyne/閱讀更多內(nèi)容


查看完整回答
反對(duì) 回復(fù) 2023-02-06
  • 3 回答
  • 0 關(guān)注
  • 365 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)