GtkTextView があり、テキストの最大線幅を設定できるようにしたいと考えています。TextView の幅が最大テキスト幅を超える場合、余分なスペースはテキストの左右のパディングで埋める必要があります。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 のサイズが変更されたときにマージンを動的に設定する他の方法を見つけることができませんでした。
テキスト行の最大幅を達成する正しい方法は何ですか?