【问题标题】:How do I get yad for gtk3 to customize button font, background and foreground color?如何让 gtk3 自定义按钮字体、背景和前景色?
【发布时间】:2019-04-03 07:39:57
【问题描述】:

我在 Raspberry Pi 3 上将 yad 用于 GTK3(不是 GTK2)来显示一组按钮。屏幕离我坐的地方很远,所以我需要一种方法来突出按钮文本和突出显示的按钮。我对 GTK3 的内部工作原理完全不熟悉,只需要一步一步地做什么。我不想更改主题或其他更全局的设置,我只想让它适用于这个 YAD 执行。有可能吗?

我看到一个博客描述了如何使用 RC 文件更改按钮样式,但那是针对使用 GTK2 库的 yad 版本。我很快就知道这在 Pi 3 上对我不起作用。我应该提到我正在使用 LXDE 的默认窗口管理器。

我希望有人可以逐步提供文件内容的新手,将文件放在哪里以及如何使用它。我知道解决方案与 css 有关,但我不熟悉如何做这样的事情以及如何使 CSS 只为 yad 活动,也不知道在所述 css 文件中放入什么内容。

【问题讨论】:

  • 题外话:你有没有考虑过使用不同的语言直接使用Gtk3?比如说,Python + Glade + Gtk3?使用这种组合可以轻松调整按钮大小。
  • 我没有。老实说,我希望不要陷入一堆替代的兔子洞。我已经为我需要的东西工作了,我只需要让按钮更明显。
  • 自从发布我最初的问题以来,我已经取得了一些进展。我比原来的走得更远。有帮助的是了解 GTK 交互式调试器。通过一堆摸索,我能够让按钮的字体和颜色变得更好。我现在遇到的问题是我无法弄清楚如何为 yad 提供特定于应用程序的 CSS 文件。我使用“GTK_DEBUG=interactive yad blah blah blah”打开了调试器
  • 似乎没有在 yad 中加载 CSS 文件的实现。 Yad 需要为您添加 CSS 功能。这就是为什么我建议推出你自己的“应用程序”。
  • 我找到了一个适合我的解决方案。请参阅下面的答案。

标签: gtk3 yad


【解决方案1】:

我主要解决了我自己的情况。希望这对其他人有帮助。它并不完美,但它满足了我的需求。

我做的第一件事是使用 GTK 调试器启动 yad。

export GTK_DEBUG=interactive
yad --title "my title" --button "button1:1" --button "button2:2" --button "button3:3" --text "some text"

在调试器中对我最有用的是选择和查找对象的名称以及动态编辑 css。我不知道css。我拼凑了在其他网站上找到的大部分工作的点点滴滴。

然后,另一件有帮助的事情是“即时”更改 GTK3 主题的能力。我是这样做的:

export GTK_THEME="Adwaita-dark"

然后我又重新安排了 yad 线路。它暂时使用了新主题。

我发现这个主题大部分都是我想要的,而且它似乎尊重我的自定义 css。由于某种我没有深入研究的原因,使用“Adwaita”的默认主题不尊重我的自定义 css。显然,如果我选择不同的主题,您必须将自定义 css 放在该主题的目录中,而不是“Adwaita-dark”

为了保存我的自定义设置,我创建了 $HOME/.themes 并在下面创建了以下目录:

  • $HOME/.themes/Adwaita-dark
  • $HOME/.themes/Adwaita-dark/gtk-3.0

然后我将自定义 css 放入 $HOME/.themes/Adwaita-dark/gtk-3.0/gtk.css

这是我的自定义 css,它覆盖了 yad 的默认值:

/* The background of the entire window
box {
    background-image: image(rgb(224, 224, 209));
} */

/* The progress slider */
progress {
   /* background-image: image(rgb(102, 102, 255)); */
   background-image: image(rgb(102, 0, 255));
}

/* this gets us the highlighting behavior */
button:focus {
   color: black;
   border-top-color: yellow;
   border-left-color: yellow;
   border-right-color: yellow;
   border-bottom-color: yellow;
   border-bottom-width: 10px;
   border-top-width: 10px;
   border-bottom-width: 10px;
   background-image: image(rgb(255,102,255));
}


button {
   color: yellow;
   font: 24px "comic sans";
   border-top-color: black;
   border-left-color: black;
   border-right-color: black;
   border-bottom-color: black;
   border-bottom-width: 10px;
   background-image: image(rgb(100,100,100));
}

上面的一些指令并没有真正对这个主题做任何事情,但我把它们留了下来,以防我将来想尝试它。我开始 yad 的方式是这样的:

GTK_THEME="Adwaita-dark" yad --title "my title" --button "button1:1" --button "button2:2" --button "button3:3" --text "some text"

【讨论】:

  • 感谢虚拟机!!这个在线人也适用于每个被调用的 yad,它(当然)保持颜色:mkdir -vp ~/.themes/temp/gtk-3.0;echo "box {background-image: image(rgb(255, 0,0));}" >~/.themes/temp/gtk-3.0/gtk.css;GTK_THEME="temp" yad --title "my title" --text hi
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多