如何在 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 上设置最小宽度?的主要内容,如果未能解决你的问题,请参考以下文章