Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Python 在PyGObject中设置样式属性_Python_Gtk3_Pygobject - Fatal编程技术网

Python 在PyGObject中设置样式属性

Python 在PyGObject中设置样式属性,python,gtk3,pygobject,Python,Gtk3,Pygobject,我有一个非常简单的PyGObject应用程序: from gi.repository import Gtk, Gdk class Window(Gtk.Window): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.set_border_width(5) self.progress = Gtk.ProgressBar()

我有一个非常简单的PyGObject应用程序:

from gi.repository import Gtk, Gdk


class Window(Gtk.Window):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.set_border_width(5)

        self.progress = Gtk.ProgressBar()
        self.progress.set_fraction(0.5)

        self.box = Gtk.Box()
        self.box.pack_start(self.progress, True, True, 0)

        self.add(self.box)
        self.connect('delete-event', Gtk.main_quit)
        self.show_all()


win = Window()
Gtk.main()

我想把进度条加厚一点。所以我发现它有一个样式属性:

Name                        Type    Default  Flags  Short Description
min-horizontal-bar-height   int     6        r/w    Minimum horizontal height of the progress bar
但是,我似乎无法以我尝试过的任何方式设置style属性

1) 我尝试使用CSS:

style_provider = Gtk.CssProvider()

css = b"""
GtkProgressBar {
    border-color: #000;
    min-horizontal-bar-height: 10;
}
"""

style_provider.load_from_data(css)

Gtk.StyleContext.add_provider_for_screen(
    Gdk.Screen.get_default(),
    style_provider,
    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
)
但我有一个错误:

GLib.Error:gtk css提供程序错误quark::4:37'min-horizontal-bar-height'不是有效的属性名称(3)

2) 我尝试了
set\u style\u属性
方法和中描述的所有方法

(a)

self.progress.set_属性('min-horizontal-bar-height',10)

TypeError:GtkProgressBar类型的对象没有属性“最小水平条高度”

(b)

self.progress.set_style_属性('min-horizontal-bar-height',10)

AttributeError:“ProgressBar”对象没有属性“set\u style\u property”

(c)

self.progress.min\u水平条高度=10

GLib.Error:gtk css提供程序错误quark::4:37'min-horizontal-bar-height'不是有效的属性名称(3)

(d)

self.progress.props.min\u水平条高度=10

AttributeError:'gi.\u gobject.GProps'对象没有属性'min\u horizontal\u bar\u height'

(e)

self.progress.设置最小水平条高度(10)

AttributeError:“ProgressBar”对象没有属性“set\u min\u horizontal\u bar\u height”


知道如何使进度条变粗吗?

在CSS中,必须在样式属性的名称前面加上破折号,并在样式属性所属的类的名称前面加上破折号:

GtkProgressBar {
    -GtkProgressBar-min-horizontal-bar-height: 10px;
}

它们不是要在代码中设置的,因此没有相应的setter方法来设置
style\u get\u property()

Awesome!是否有一个很好的文档,以及如何在GTK中使用CSS进行样式设计?比如运行时单独的小部件,整个应用程序的样式等等。?我很难找到任何相关的东西。。这可能会更好,但这是一个相当不错的概述,你可以做什么。对不起,什么?这个“带有类名和破折号的前缀”到底是在哪里记录的?不管怎么说,链接页面上没有。这是一种奇怪的攻击方式。你认为我是故意把人们指向错误的页面吗?不,他们在最新版本中重新组织了CSS文档。在“描述”部分的底部。