python - 在 GTK 中将图像缩放到其父按钮大小?

标签 python user-interface pygtk gtk

我有一个 GTK 布局,HBox 左侧有一个小部件,决定我想要的最大高度,右侧有一个 VBox,包含三个按钮,每个按钮仅包含图像,不包含文本。这些图像是 GTK 库存图标,因此具有库存存储类型。

使用expand=True、fill=True打包没有图像的按钮正是我想要的高度——一些任意的小宽度,以及HBox左半部分高度的1/3。然而,对于图像,它们要么太高 - 3 * ICON_SIZE_MENU 在许多主题中太高 - 或者如果我强制按钮的高度请求,它们就会被剪裁。我宁愿将它们缩放到父按钮的大小。

我是否必须为我正在使用的每个库存图标制作自己的 pixbuf(如果大小发生变化,则重新生成它们)?或者 GTK 可以自动调整图像大小以适合按钮,而不是相反?由于图像与我尝试过的每个主题相距仅几个像素,有没有办法禁用按钮的剪辑?

此应用程序是使用 PyGTK 用 Python 编写的,但我们欢迎任何语言的解决方案。

(我尝试将其设置为图标名称存储类型,但其中一个图标是 REVERT_TO_SAVED,当我尝试将其强制到特定的像素高度时,它变成了损坏的库存图像。另外,我不想强​​制它到任何固定的像素高度。)

最佳答案

没有办法自动做你想做的事。您可能想要子类化 gtk.Image 并在子类中将 pixbuf 缩放到小部件的分配大小。这样做的优点是您将拥有一个可重复使用的小部件,并且可以让它动态调整图像大小。

缺点是您将得到一个丑陋的、按比例放大的像素图。您可能想研究可缩放矢量图形。

关于python - 在 GTK 中将图像缩放到其父按钮大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1851862/

相关文章:

python - 如何在Python中正确分离数据采集、处理和可视化?

python - Itertools 组合无重复 : Where rgb is equivelant to rbg etc

python - PyGTK 窗口始终位于所有 'always on top` 窗口之上

qt - 如何使用样式表更改 QPushButton 图标/文本间距?

java - 组合图形对象 Jswing

user-interface - 用 GTK+2 或 GTK+3 学习 GUI 编程?

python - 如何找出 Python 对象丢失属性的原因/时间?

python - 如何定义 Pyodbc 配置单元队列?

python - 如何使用 Python Pandas 聚合、获取百分比以及重新分配列和行?

java - 我应该从它的 java swing gui 中分离出一个数据类吗?