我有一个 GtkTextView,我希望能够为文本设置最大线宽。如果 TextView 的宽度超过了最大文本宽度,多余的空间应该在文本的左右两边用 padding 填充。尽管 Gtk 支持min-width
CSS 属性,但似乎没有max-width
属性。相反,我尝试通过连接size-allocate
到调整 TextView 大小时动态设置边距
def on_textview_size_allocate(textview, allocation):
width = allocation.width
if width > max_width:
textview.set_left_margin((width - max_width) / 2)
textview.set_right_margin((width - max_width) / 2)
else:
textview.set_left_margin(0)
textview.set_right_margin(0)
这会为任何给定的 TextView 宽度生成所需的文本行宽,但在调整窗口大小时会导致奇怪的行为。将窗口调整为更小的宽度会发生缓慢的延迟。尝试最大化窗口会使窗口跳到比屏幕大得多的宽度。 size-allocate
可能不是要连接的正确信号,但是当调整 TextView 的大小时,我无法找到任何其他方法来动态设置边距。
实现最大文本行宽的正确方法是什么?