亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 OOP 風格的 fyne 小部件

使用 OOP 風格的 fyne 小部件

Go
一只甜甜圈 2023-08-21 14:29:05
我想將一些標準小部件合并到一個自定義小部件中。如果將所有小部件字段放入一個容器中,我就可以做到這一點,如下所示:package mainimport (    "fmt"    "fyne.io/fyne"    "fyne.io/fyne/app"    "fyne.io/fyne/layout"    "fyne.io/fyne/widget")type MyWidget struct {    widget.BaseWidget    Cont      *fyne.Container    text      *widget.Label    statusBar *widget.Label    b1        *widget.Button    b2        *widget.Button    count uint}func (t *MyWidget) Init() {    t.b1 = widget.NewButton("1", func() {        t.text.SetText("1")        t.count++        t.statusBar.SetText(fmt.Sprint(t.count))    })    t.b2 = widget.NewButton("2", func() { t.text.SetText("2") })    t.statusBar = widget.NewLabel("status")    bottom := fyne.NewContainerWithLayout(layout.NewCenterLayout(), t.statusBar)    t.text = widget.NewLabelWithStyle("0", fyne.TextAlignTrailing, fyne.TextStyle{Bold: true})    t.Cont = fyne.NewContainerWithLayout(layout.NewBorderLayout(nil, bottom, nil, nil),        bottom, fyne.NewContainerWithLayout(            layout.NewGridLayoutWithRows(4),            fyne.NewContainerWithLayout(layout.NewCenterLayout(), t.text),            layout.NewSpacer(),            fyne.NewContainerWithLayout(layout.NewGridLayout(2), t.b1, t.b2),            layout.NewSpacer(),        ))}func Load() *MyWidget {    obj := &MyWidget{BaseWidget: widget.BaseWidget{}}    obj.Init()    return obj}func main() {    f := app.New()    w := f.NewWindow("")    obj := Load()    w.SetContent(obj.Cont)    w.ShowAndRun()}我曾經使用 GUI 工具包,其中頂部小部件有機會設置用于容納子小部件的容器。是否可以在不導出內部容器的情況下使用 Fyne 獲得解決方案?
查看完整描述

1 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

我建議您考慮使用容器。(即“fyne.NewContainerWithLayout(myLayout, widgets...)”。

Fyne 中的小部件和容器是不同的。Widget是對邏輯的封裝,通過渲染器來顯示,Container用于對多個Widget進行分組。有一些小部件可以彌補這一差距,例如 widget.Box 和 widget.Group,但它們通常會公開容器,或重新導出容器方法。

通常,您不會創建一個小部件樹,而是創建一個在循環中包含小部件的容器樹。


查看完整回答
反對 回復 2023-08-21
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號