3

我正在尝试以下演示代码fyne

package main
import (
    "fyne.io/fyne/app"
    "fyne.io/fyne/widget"
)
func main() {
    a := app.New()
    w := a.NewWindow("Hello")
    w.SetContent(
        widget.NewVBox(
            widget.NewLabel("Hello Fyne!"),
            widget.NewButton("Quit", func(){a.Quit()} ),
        ),
    )
    w.ShowAndRun()
}

它运行正常,但我想将标签的颜色更改为蓝色,将按钮的颜色更改为绿色。我看到有,theme但这似乎是针对整个应用程序而不是针对单个元素。

如何将不同的颜色应用于不同的 GUI 组件?谢谢你的帮助。

4

2 回答 2

4

这是在fyne-io/fyne问题 255中提出的

我提出了可分配给小部件的个人样式:

但:

我们设计的一部分是为了促进应用程序的一致性——用户体验不会被“这个标签更大”或“这个下拉菜单是透明的”所影响。

Fyne 的方法是,小部件具有固定的样式(可以主题化),但画布仍然完全可用于执行开发人员选择编码的任何特定设计。

所以没有原生支持来改变单个按钮的颜色。

fyne-io/fyne的作者/主要贡献者Andy Williams在评论中补充道:

这是完全正确的。
拥有与标准颜色样式不同的小部件的唯一方法是实现自定义小部件并自己添加该功能。

但是,有一些语义样式,例如,按钮可以是“主要的”,在这种情况下,它将使用主题突出显示颜色

于 2019-08-26T04:43:54.917 回答
1

由于 Fyne 中的标准小部件不支持自定义,因此对此没有简短的回答(除非我们不建议这样做)。

如果您出于用户需要的某些正当理由必须这样做,那么您应该查看我们的开发人员文档,其中简要介绍了编写自定义小部件。然而,我们的目标是在今年晚些时候的 1.2 版中简化此过程。

重申一下 Fyne 工具包上方的评论旨在创建简单且快速编程的一致用户体验。每次您创建自定义小部件以便您可以自定义颜色或样式时,您可能会混淆您的用户,并且您将更加难以维护代码。

于 2019-08-27T08:31:54.737 回答