【问题标题】:How does one make GTK3 look native on Windows 7?如何让 GTK3 在 Windows 7 上看起来是原生的?
【发布时间】:2017-10-08 18:15:06
【问题描述】:

我正在尝试使我的 GTK3 应用程序在 Windows 7 上看起来是原生的。我尝试了以下问题中的答案 How to get native windows decorations on GTK3 on Windows 7+ and MSYS2

但它不起作用。我在 Windows 上的 GTK3 版本是 3.22,我使用的是 Vala 语言。尝试使用 GTK3 3.20 版也无济于事。我还尝试使用 CssProvider 在代码本身中更改应用程序的背景颜色,它在 Ubuntu 中有效,但在 Windows 中无效。在 Windows 中,应用程序主题和所有 CSS 手动设置都会被忽略。

有什么方法可以实现吗?谢谢。

【问题讨论】:

    标签: css themes gtk3 vala


    【解决方案1】:

    它通过调用代码来工作,之前显示带有show_all ()的主应用程序窗口:

    Gtk.Settings.get_default ().gtk_theme_name = "win32";
    

    使用自定义主题时,主题的位置应为:“YourApplicationExecutable\share\themes\ThemeFolder”,如How to get native windows decorations on GTK3 on Windows 7+ and MSYS2接受的答案中所述

    并且代码中用gtk_theme_name设置的名称应该是包含主题的文件夹的名称。

    请注意,get_default () 方法为您提供了默认的 GDK 屏幕。如果您想对特定小部件进行更多控制,请使用 get_settings () 方法代替要更改主题的特定小部件。

    来源:

    How to get native windows decorations on GTK3 on Windows 7+ and MSYS2

    https://valadoc.org/gtk+-3.0/Gtk.CssProvider.html

    https://valadoc.org/gtk+-3.0/Gtk.Settings.html

    【讨论】:

    • 虽然,CSSProvider 手动设置设置以更改特定部分(如背景颜色)在 Windows 上仍然被忽略。例如,我可以使用这种方法在 Ubuntu 中更改主题并使用自定义背景覆盖主题背景,但在 Windows 中它会被忽略并且不会发生 CSS 覆盖。
    • 看起来应用的 CSS 选择器和属性在 GTK 版本之间发生了变化,因此,它在 Ubuntu 中有效,但在 Windows 中无效。因为截至撰写本文时,Ubuntu 16.04 具有 GTK 3.18,而 Windows 具有 GTK 3.22。所以我的 CSSProvider 是对的,但是因为不同版本更改背景颜色的方式不同,它在一个操作系统中工作,但在另一个操作系统中不起作用。我通过使用带有“background-color”属性的“.background”选择器来修复它,而不是使用带有“background”属性的“GtkWindow”选择器,因为后者在 GTK 3.20 或更高版本中不起作用。
    猜你喜欢
    • 2010-12-08
    • 2016-05-14
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2016-08-30
    • 2021-12-31
    相关资源
    最近更新 更多