我有一个GTK布局,HBox左边的小部件决定了我想要的最大高度,右边的VBox包含三个按钮,每个按钮只包含一个图像而没有文字。图像是GTK库存图标,库存存储类型也是如此。
使用expand = True,fill = True包装没有图像的按钮正是我想要的高度 - 一些任意小的宽度,以及HBox左半部分的高度的1/3。然而,对于图像,它们要么太高 - 3 * ICON_SIZE_MENU在许多主题中太高 - 或者如果我强制按钮的高度请求,它们会被剪裁。我宁愿将它们缩放到父按钮的大小。
我是否必须为我正在使用的每个股票图标制作自己的pixbuf(如果尺寸发生变化,则重新生成它们)?或者GTK可以自动调整图像大小以适应按钮,而不是相反吗?由于图像与我尝试的每个主题相比只有几个像素,所以有没有办法只是禁用按钮的剪辑?
此应用程序是使用PyGTK以Python编写的,但我们赞赏任何语言的解决方案。
(我试过让它成为一个图标名称存储类型,但其中一个图标是REVERT_TO_SAVED,当我试图强制它到特定的像素高度时,它变成了破损的股票图像。而且,我宁愿不强迫它到任何固定的像素高度。)
答案 0 :(得分:2)
没有办法让你想要自动。您可能想要子类gtk.Image并在您的子类中,将pixbuf缩放到您的小部件的分配大小。这样做的好处是,您将拥有一个可重复使用的小部件,并且您可以随时调整大小。
缺点是你会有一个丑陋的,放大的像素图。您可能需要查看可缩放的矢量图形。
答案 1 :(得分:1)
我一直很幸运使用SVG文件并扩展它们,因为很容易将SVG合并到pyGtk程序中。
img = gtk.gdk.pixbuf_new_from_file(fname)
我所做的是将svg复制到临时文件并修改第一个'
然后我读到我修改过的svg,它会加载为pixbuf缩放并具有所有alpha通道的优点。
请参阅http://code.google.com/p/key-mon/source/browse/src/keymon/lazy_pixbuf_creator.py