python - GTK - Python 窗口符号图标颜色问题

标签 python svg icons gtk gtk3

我有一个 GTK3由简单的 Python 3 代码调用的 GUI。图标位于 /usr/share/icons/hicolor/scalable/actions/目录。我当前的主题颜色是深色的,图标看起来是白色的。当我切换到白色系统主题时,GUI 图标会变成黑色。但是在我的代码中,当激活深色主题时,图标看起来是黑色而不是白色。
当我从 Glade 程序中选择图标名称 ( icon-symbolic ) 并保存 UI 文件时,它会起作用。图标文件是一个简单的黑色方形 .svg 文件(在 Inkscape 中绘制)。
什么是解决方案?

OS: Debian-like Linux, Python 3, GTK 3.24
简单的Python代码:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GdkPixbuf

builder = Gtk.Builder()
builder.add_from_file('test.ui')
window1 = builder.get_object('window1')
button1 = builder.get_object('button1')

class Signals:
    def on_window1_destroy(self, widget):
        Gtk.main_quit()

builder.connect_signals(Signals())

window1.set_icon_name("icon-symbolic")
window1.show_all()
Gtk.main()
简单的用户界面文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkWindow" id="window1">
    <property name="can-focus">False</property>
    <property name="default-width">300</property>
    <property name="default-height">300</property>
    <child>
      <!-- n-columns=1 n-rows=1 -->
      <object class="GtkGrid">
        <property name="visible">True</property>
        <property name="can-focus">False</property>
        <child>
          <object class="GtkButton" id="button1">
            <property name="label" translatable="yes">Button 1</property>
            <property name="visible">True</property>
            <property name="can-focus">True</property>
            <property name="receives-default">True</property>
          </object>
          <packing>
            <property name="left-attach">0</property>
            <property name="top-attach">0</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

最佳答案

我找到了自动更改窗口标题栏图标颜色的解决方案。我用过 Gtk.HeaderBar代替默认的窗口标题栏并添加了 Gtk.Image (它的名字是 image_headerbar )在标题栏的左边。最后,我使用以下代码设置了图像图标并且它起作用了:image_headerbar.set_from_icon_name("icon-symbolic", -1)当系统主题更改为白色/深色时,图标颜色会自动更改为深色/白色。
我尝试了多种方法来动态更改窗口标题栏上的图标颜色。但是如果 Gtk.HeaderBar,它们都不起作用未使用。
但是当 Gtk.HeaderBar 时,窗口标题栏的高度比默认的窗口标题栏要大一点。使用(在 XFCE 桌面环境上测试)。

关于python - GTK - Python 窗口符号图标颜色问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69159775/

相关文章:

javascript - 我想让图标在点击外部时向后旋转

windows - 如何以编程方式更改 .bat 文件的图标?

python - 无法获取 <span></span> 文本

python - k_clique_communities 的结果

javascript - d3 我可以就地重新计算数据吗?

css - SVG 文本响应式定位

icons - TortoiseGit:覆盖图标适用于文件夹,不适用于文件

python - 为什么仅导入 OpenCV 会导致大量 CPU 使用?

python - 计算 Python 字典列表中具有相同键的元素的数量

javascript - SVG 路径跟随翻转和旋转 + 不跟随路径