在Fyne 中自訂GUI 元件顏色
身為Fyne 開發人員,您可能會遇到自訂GUI 元件外觀的需求,例如更改標籤或按鈕的顏色。雖然 Fyne 提供了影響應用程式整體美觀的預設主題,但目前沒有原生支援調整各個元件的顏色。
建議的解決方案:可分配樣式
Fyne 儲存庫中提出的一個問題建議引入可以分配給小部件的單獨樣式。然而,Fyne 團隊一直保持著促進應用程式一致性並防止對使用者體驗造成微小影響的設計原則。
替代方法:自訂小部件
實現所需的效果定制,建議的方法是實現自訂小部件。透過創建自己的小部件,您可以完全控制其外觀,並可以合併所需的顏色變化。
按鈕的語意樣式
雖然無法直接進行顏色自訂, Fyne 確實提供了按鈕的語意樣式。分配“主要”樣式將使用主題突出顯示顏色,從而允許按鈕外觀出現一些變化。
範例實作
<code class="go">type LabeledButton struct { Label *fyne.Container Button *fyne.Container Composited *fyne.CanvasObject } // NewLabeledButton creates a custom widget that combines a label and a button. func NewLabeledButton(label, buttonText string) *LabeledButton { labelWidget := fyne.NewContainer( fyne.NewLabel(label), fyne.NewContainerWithLayout(labelLayout, fyne.NewContainer(fyne.NewSeparator())), ) labelWidget.ExtendBaseWidget(labelWidget) buttonWidget := fyne.NewContainer( fyne.NewButton(buttonText, nil), ) buttonWidget.ExtendBaseWidget(buttonWidget) composited := fyne.NewCanvasObject() composited.SetContent(fyne.NewVBox(labelWidget, buttonWidget)) composited.Resize(labelWidget.MinSize().Add(buttonWidget.MinSize())) return &LabeledButton{ Label: labelWidget, Button: buttonWidget, Composited: composited, } } // MinSize returns the minimum size required by the custom widget. func (l *LabeledButton) MinSize() fyne.Size { return l.Composited.MinSize() } // Layout arranges the children of the custom widget. func (l *LabeledButton) Layout(size fyne.Size) { l.Composited.Resize(size) l.Composited.Layout(size) } // Paint updates the display of the custom widget. func (l *LabeledButton) Paint(w fyne.Window, c fyne.Canvas) { l.Composited.Paint(w, c) // Custom colors can be set here // (e.g., c.SetFillColor(color.NRGBA{R: 0, G: 255, B: 0, A: 255})) }</code>
透過實作自訂小部件,您可以在遵循 Fyne 的設計原則的同時實現所需的顏色自訂。
以上是如何在 Fyne 中自訂各個 GUI 元件的顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!