【问题标题】:How to set min width on GtkScrollbar?如何在 GtkScrollbar 上设置最小宽度?
【发布时间】:2017-03-23 22:08:48
【问题描述】:

我想在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 次都遇到同样的错误:

'min-width' 不是有效的属性名称 (3)

更新 1

我尝试@Herbalist 解决方案,滚动条组件已调整大小,但“滑块”始终具有相同大小。它在“滑块”的左右添加空格。

vscrollbar.set_size_request(50,-1)

是否可以调整滚动条的大小?

结果截图(我用绿色勾勒出滚动条的一部分):

【问题讨论】:

    标签: css python-2.7 gtk3


    【解决方案1】:

    我无法使用 css 成功,所以我使用不推荐使用的方法:

    GtkRange:slider-width 自 3.20 版起已弃用, 不应在新编写的代码中使用。

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

    这样:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-04-05
        • 2010-09-27
        • 2012-05-27
        • 2012-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多