我正在使用R和gWidgets(主要使用RGtk2工具包)构建GUI。此GUI将在某些位置显示基于(数据定义的)字符串的标签。这个字符串可以任意长,但是如果它太长就会破坏GUI,因为它会强制小部件放大,从而扩大所有父级。
所以,我需要根据标签的可用空间将字符串修剪为一个长度。我可以看到两个解决方案:
强制glabel的最大尺寸=其父母的大小;这似乎不可行,但我很高兴在这里得到纠正;
确定字符串的长度,如果太长,则在渲染之前剪切它。这似乎更容易,可能使用低级pango函数,但我无法找到如何使用它们。
伪代码:
interface <- gwindow()
text <- "A Very very long label just to see what happens if you try to deliberately break the identification panel with stupidly long strings"
box <- gvbox(cont = interface)
lab <- glabel(text = text, cont = box)
创意1:
lab <- glabel(text = text, cont = box,maxsize = size(box))
创意2:
strLength <- strwidth(text, font = ???)
if strLength > size(box)[1] {
# Do something about it...
}
这里我的问题是font=
的语法。如何读取窗口小部件当前使用的字体的定义,并将其转换为R友好字体语法?或者是否有更好的方法(低级pango函数?)来获得字符串大小?