Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在GTK中将图像缩放到其父按钮大小?_Python_User Interface_Pygtk_Gtk - Fatal编程技术网

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

Python 在GTK中将图像缩放到其父按钮大小?,python,user-interface,pygtk,gtk,Python,User Interface,Pygtk,Gtk,我有一个GTK布局,HBox左侧有一个小部件决定我想要的最大高度,右侧有一个VBox,包含三个按钮,每个按钮只包含一个图像,不包含文本。图像是GTK库存图标,因此具有库存存储类型 使用expand=True、fill=True包装没有图像的按钮正是我想要的高度——一些任意的小宽度,每个按钮的高度为HBox左半部分的1/3。然而,对于图像,它们要么太高-3*图标大小菜单在许多主题中太高-或者如果我强制按钮的高度要求,它们会被剪裁。我宁愿将它们缩放到父按钮的大小 我是否必须为我正在使用的每个股票图标

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

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

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

这个应用程序是用PyGTK用Python编写的,但是任何语言的解决方案都值得赞赏


(我只是尝试将其设置为图标名存储类型,但其中一个图标是REVERT_TO_SAVED,当我尝试将其强制设置为特定像素高度时,它会变成损坏的股票图像。此外,我不希望强制设置为任何固定的像素高度。)

无法自动执行您想要的操作。您可能希望将gtk.Image子类化,并在子类中将pixbuf缩放到小部件的分配大小。这样做的好处是,您将拥有一个可重用的小部件,并且可以让它动态调整图像大小


缺点是你会有一个丑陋的,放大的pixmap。您可能想研究可伸缩矢量图形。

我很幸运地使用了SVG文件并对其进行了伸缩,因为在pyGtk程序中很容易合并SVG

img = gtk.gdk.pixbuf_new_from_file(fname)
我要做的是将svg复制到一个临时文件,并修改第一个文件 然后我读到修改过的svg,它将作为一个pixbuf缩放加载,并具有所有alpha通道的优点


请参见

这似乎根本不是我想要的-每次用户调整窗口大小时编写图像文件都不好。此外,它似乎与使用pixbuf_new_from_file_at_size.Ooo没有明显区别,谢谢你的提示,我不知道pixbuf_new_from_file_at_size.Ooo。