如何在GtkScrollbar上设置最小宽度?

时间:2017-03-23 22:08:49

标签: css python-2.7 gtk3

我想在Quod Libet音乐播放器中开发新功能。

我需要增加特定滚动条的大小。 已经存在将css应用于窗口小部件的功能:

def add_css(widget, css):
    """Add css for the widget, overriding the theme.

    Can raise GLib.GError in case the css is invalid
    """

    if not isinstance(css, bytes):
        css = css.encode("utf-8")

    provider = Gtk.CssProvider()
    provider.load_from_data(css)
    context = widget.get_style_context()
    context.add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

所以我尝试将css应用为:

    self.scrollwin = sw = ScrolledWindow()
    sw.set_shadow_type(Gtk.ShadowType.IN)
    #get scrollbar       
    vscrollbar = sw.get_vscrollbar()

    # 1rst attempt
    # qltk.add_css(vscrollbar, '* slider {min-width: 20px;}')

    #2nd attempt
    qltk.add_css(vscrollbar, 'scrollbar.vertical slider {min-width: 20px;}')

我在2次尝试中遇到同样的错误:

  

'最小宽度'不是有效的属性名称(3)

更新1

我尝试@Herbalist解决方案,滚动条组件调整大小,但"滑块"总是有相同的大小。它在"滑块"的右侧和左侧添加空格。

vscrollbar.set_size_request(50,-1)

是否可以调整滚动条的滑块?

结果截图(我概述了绿色滚动条的一部分): enter image description here

2 个答案:

答案 0 :(得分:2)

我无法用css取得成功,所以我使用了弃用的方法:

  

GtkRange:自版本3.20和版本以来,不推荐使用slider-width   不应该在新编写的代码中使用。

     

在滑块元素上使用min-height / min-width CSS属性。该   此样式属性的值将被忽略。

这样:

qltk.add_css(vscrollbar, '* {-GtkRange-slider-width:40px}')

答案 1 :(得分:-1)

get_vscrollbar()返回一个Gtk.Widget,以便您可以尝试设置“width-request”属性