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

Posted

技术标签:

【中文标题】如何在 GtkScrollbar 上设置最小宽度?【英文标题】:How to set min width on 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)

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

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

【问题讨论】:

【参考方案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”属性

【讨论】:

以上是关于如何在 GtkScrollbar 上设置最小宽度?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 select2 下拉菜单的最小宽度和最大宽度?

如何设置editView最小宽度? (安卓 2.2)

css如何设置最小宽度是屏幕宽度 => style="min-width: 屏幕宽度">

如何为 TextView 设置最小宽度(以字符为单位)?

如何设置qsplitter中widget的默认宽度

如何为 QFormLayout 的第一列设置最小宽度?