我想在一個(gè)自定義小部件中組合一些標(biāo)準(zhǔn)小部件。如果將所有小部件字段放入一個(gè)容器中,我可以這樣做: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()}我曾經(jīng)使用 GUI 工具包,其中頂部小部件有機(jī)會(huì)設(shè)置容器以容納子小部件。是否可以在沒(méi)有導(dǎo)出內(nèi)部容器的情況下使用 Fyne 獲得解決方案?
1 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
我建議您改用容器。(即'fyne.NewContainerWithLayout(myLayout,widgets ...)'。
Fyne 中的小部件和容器是不同的。小部件是對(duì)邏輯的封裝,帶有渲染器來(lái)顯示,容器用于對(duì)多個(gè)小部件進(jìn)行分組。有一些小部件可以彌補(bǔ)差距,例如 widget.Box 和 widget.Group,但它們通常會(huì)公開(kāi)一個(gè)容器,或者重新導(dǎo)出容器方法。
通常,您不會(huì)制作小部件樹(shù),而是制作帶有小部件的容器樹(shù)。
- 1 回答
- 0 關(guān)注
- 481 瀏覽
添加回答
舉報(bào)
0/150
提交
取消