这里有一个使用GTK状态栏的程序,我希望在其中包含多行输出。当我尝试将多行输出到其中时,我会得到象形文字,如下所示:
我希望它能像在emacs里一样工作:
经过一番搜索,我发现了layoutSetSingleParagraphMode,它似乎完全是我想做的。对于大多数小部件来说,默认设置是错误的,而且我们不会自己在任何地方设置它,这使我认为Statusbar默认为单个段落模式。
我的问题是,我不知道如何从Statusbar
转到PangoLayout
,在此基础上可以使用这个函数。
我最近的发现是找到widgetGetPangoContext,然后让我用layoutEmpty获取PangoLayout
,但顾名思义,这似乎只是创建了一个单独的PangoLayout
,它在操作时不影响状态栏:推或弹出文本的行为与之前一样。
我错过了什么功能吗?不可否认,gtk2hs
在类型类的海洋中游动,以模拟OO,这无助于生成文档的可读性。这似乎应该是一项简单的任务。
如果我们从未打算从现有的小部件中提取PangoLayout
,那么我如何才能实现我想要的呢?在Statusbar创建时,似乎没有选择选择段落模式。
有关此项目的GitHub问题,请参见GitHub。
发布于 2014-06-05 22:46:52
请试试这个:
使用statusbarGetMessageArea
获取状态栏文本标签所在的Gtk.Box
。
然后获取带有containerGetChildren <status bar message area>
的文本标签。此函数返回一个只有一个元素的Gtk.Widget
列表,即标签。
将小部件转换为带有castToLabel
的标签。
现在您可以使用labelSetSingleLineMode <label> False
设置多行模式。
用labelSetText
或labelSetMarkup
设置标签的内容。
我已经成功地尝试过了(使用GTK2的Hackage中的GTK0.12.5,还没有在GTK3上尝试过)。
https://stackoverflow.com/questions/24049015
复制