1

我这里有一个使用 GTK 状态栏的程序,我想在其中进行多行输出。当我尝试向其中输出多行时,我得到的是字形,如下所示:

字形

我希望它像在 emacs 中一样工作:

字形

经过一番搜索,我发现layoutSetSingleParagraphMode似乎完全符合我的要求。大多数小部件的默认设置是 False ,我们自己没有在任何地方设置它,这让我认为状态栏默认为单段落模式。

我的问题是我不知道如何Statusbar使用PangoLayout此功能。

我最接近的是找到widgetGetPangoContext然后让我PangoLayout使用layoutEmpty但顾名思义,这似乎只是创建一个单独PangoLayout的,在操作时不会影响状态栏:推送或弹出文本的行为与之前一样。

有我缺少的功能吗?诚然,gtk2hs在类型类的海洋中游泳以模拟 OO,这无助于生成的文档的可读性。看来这应该是一个简单的任务。

如果我们不打算PangoLayout从现有的小部件中取出一个,那么我怎样才能实现我想要的呢?在状态栏创建时似乎没有选择段落模式的选项。

有关与此相关的此项目的 GitHub 问题,请参阅此内容。

4

1 回答 1

1

请试试这个:

用于statusbarGetMessageArea获取Gtk.Box状态栏文本标签的位置。

然后用 . 获取文本标签containerGetChildren <status bar message area>。此函数返回一个Gtk.Widget只有一个元素的列表,即标签。

将小部件投射到带有castToLabel.

现在您可以使用labelSetSingleLineMode <label> False.

labelSetText用或设置标签的内容labelSetMarkup

我已经成功地尝试过了(来自 Hackage 的 gtk 0.12.5,使用 GTK2,还没有在 GTK3 上尝试过)。

于 2014-06-06T06:46:52.577 回答