【发布时间】:2019-11-25 22:55:56
【问题描述】:
我一直无法弄清楚我做错了什么。我敢肯定,这很简单,但却让我无法接受。即使在以下示例中,我也无法使其正常工作。我似乎无法将 CSS 样式应用于单个 GtkWindow 中的 GtkEntry 小部件。我只是想把输入框的背景变成红色。
我查看过的所有内容和看到的示例都如下所示,似乎没有其他人被难倒。
这是我的 Python:
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
builder = Gtk.Builder()
builder.add_from_file("entry.glade")
window = builder.get_object('window1')
window.connect('destroy', Gtk.main_quit)
css = "#red { background-image: linear-gradient(red); }"
provider = Gtk.CssProvider()
provider.load_from_data(css)
Gtk.StyleContext().add_provider_for_screen(Gdk.Screen.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
entry = builder.get_object('entry1')
entry_style_context = entry.get_style_context()
entry_style_context.add_class("red")
window.show_all()
Gtk.main()
这里是 Glade XML:
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.0"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkEntry" id="entry1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property>
<property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
如果我将 CSS 设置为 .entry { background-image: linear-gradient(red); } 它可以工作,但是所有 GtkEntry 框都会是红色的(我不想要)。
我到底错过了什么?
【问题讨论】:
-
相关Import CSS file in Python GTK3 program created using Glade,看注释"如果没有设置背景图片"
-
另外值得注意的是
你不应该将 Gtk3 与 Gtk2 混合使用。坏事难免发生。它与你的问题无关,但不好的事情会发生在你身上。哇哈哈哈哈哈! -
感谢@PaulChilds,将林间空地更改为 3.0 以保持一致性(但没有变化)。
-
@stovfl - 这似乎不是原因,因为我试图设置背景,而不是颜色,它确实适用于 .entry 级别,但我确实为Gdk 如帖子中所述,但仍然没有乐趣。