我已经开始使用 GTK+ 和 Vala,并且很难找到有关创建自定义按钮(外观全新的按钮)的文档。事实上,现在我想起来,每个 GTK+ 应用程序都具有独特的外观,让人觉得它是一个 GTK+ 应用程序。如果我决定使用 GTK+,是否很难为我的应用程序创建一个全新的外观?
4 回答
故意让它变得困难,因为“那种独特的 GTK 外观”是重点。GTK 应用程序通常非常重视可用性、可访问性和用户体验。作为应用程序的程序员,你应该专注于应用程序的内容,让用户选择他们喜欢的主题。如果您制作自定义按钮,那么它们可能太窄而无法适应使用您的应用程序以另一种语言的用户的翻译标签。或者,您的自定义按钮在某人喜欢的窗口背景颜色上看起来真的很糟糕。
RC 代码已在 gtk+3 中被替换。它现在支持 css 样式,这可能会给你你需要的东西。
http://developer.gnome.org/gtk3/3.1/gtk-migrating-GtkStyleContext.html
http://thegnomejournal.wordpress.com/2011/03/15/styling-gtk-with-css/
h te te p://kalmbach.wordpress.com/2011/03/12/gtk-3-0-client-side-theme/
您可以使用GTK2_RC_FILES
环境变量为(仅)您的应用程序分配一个特殊的主题。
例如,您可以像这样创建批处理启动器 (Windows):
set GTK2_RC_FILES=%GTK_HOME%\share\themes\slickness-black\gtk-2.0\gtkrc
launch.exe
或者在 Linux 中(还没有尝试过):
env GTK2_RC_FILES=/usr/share/themes/slickness-black/gtk-2.0/gtkrc ./launch
提示:不要相信设置 GTK_HOME,而是使用 GTK+ 安装的绝对路径。如果您在应用程序中安装特殊主题,则可以使用相对路径(相对于应用程序的安装路径)。然后,您应该确保主题得到最常见的主题引擎之一的支持,因为通常不会安装所有主题引擎(尤其是在 Windows 上,GTK 安装程序一团糟)。
@gtksharp:
string fileName = @"/usr/valapp/gtkrc3";
Gtk.Rc.AddDefaultFile(fileName);
Gtk.Rc.Parse(fileName);