Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python3 PyGObject使用CSS设置所有GtkEntry小部件的样式_Python_Gtk3_Pygobject_Gtkentry - Fatal编程技术网

使用Python3 PyGObject使用CSS设置所有GtkEntry小部件的样式

使用Python3 PyGObject使用CSS设置所有GtkEntry小部件的样式,python,gtk3,pygobject,gtkentry,Python,Gtk3,Pygobject,Gtkentry,我正在用PyGObject开发一个GUI,并尝试为所有的入口小部件设计样式。从中我得到的印象是,我应该能够创建一个适用于所有GtkEntry对象的CSS样式,但由于某些原因,在下面的代码中它对我不起作用: import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Gdk class CompletionApp(Gtk.Window): def __init__(self): Gtk

我正在用PyGObject开发一个GUI,并尝试为所有的入口小部件设计样式。从中我得到的印象是,我应该能够创建一个适用于所有GtkEntry对象的CSS样式,但由于某些原因,在下面的代码中它对我不起作用:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

class CompletionApp(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)

        screen = Gdk.Screen.get_default()
        provider = Gtk.CssProvider()
        style_context = Gtk.StyleContext()
        style_context.add_provider_for_screen(
            screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
        )
        css = b"""
        GtkEntry {
            background: yellow;
        }
        """
        provider.load_from_data(css)

        self.entry = Gtk.Entry()
        self.entry.set_name("myentry")
        self.add(self.entry)
        self.connect("destroy", Gtk.main_quit)
        self.show_all()
        Gtk.main()

if __name__ == '__main__':
    win = CompletionApp()
如果我在CSS中将“GtkEntry”更改为“#myentry”,它将按预期工作。有人能帮我理解我应该做什么来设计所有条目小部件的样式吗?(为了简洁起见,上面的示例只有一个条目,但我正在开发一个包含多个条目的应用程序。)

如图所示,小部件名称应为小写,而不是以“Gtk”开头:


最后,有人没有错误地添加
pygtk
标记!胡萨!我自己无法测试它(这台电脑上没有安装gtk),但您可以尝试用
条目
替换
GtkEntry
,如gtk中所示。@Aran Fey,这很有效!谢谢你的回答和资源。如果你把它写下来作为一个正确的答案,我会同意的。你可能找到了一个仍然使用GtkEntry的旧教程。
entry {
    background: yellow;
}