我试图允许将文本包装在 Gtk.CellRendererText 中,但我有一个小问题:
这些行非常大。
我更改的唯一代码是:
cell = Gtk.CellRendererText(markup=0)
cell.set_property("wrap_mode", Pango.WrapMode.WORD)
cell.set_property("wrap_width", 20)
这使它包装,但它似乎也使这个视觉问题出现
我似乎记得很久以前在planet gnome 的博客上读过一些关于此的内容。据我所知,与高度换宽度绘图模型有关,这意味着当启用换行时,GtkLabel 等请求足够的高度来重新排列换行宽度的文本,即使有更多可用的水平空间会留下大量空白宽度较宽时的空间。有一个修复,但我恐怕我现在不记得了,我稍后会尝试找到原始帖子。
我已经尝试过,但找不到该帖子,但是阅读了更多内容后,我很确定这是问题所在。在https://bugs.launchpad.net/ubuntu/+source/gtk+3.0/+bug/825173有一些与 GtkTable 做类似事情相关的讨论我有一种讨厌的感觉,我无法正确记住的修复可能有一直关闭包装。我想当列宽发生变化时可能会收到通知,并使 wrap-width 成为该值的正确宽度,但这有点痛苦。
如果您可以忍受固定宽度的列,请将expand
列False
的fixed-width
属性True
设置为wrap-width
,width-chars
然后max-width-chars
将渲染器的属性设置为相同的值,然后文本将自动换行,而不会产生任何额外的空间。