PyGTK:如何使图像自动缩放以适合它的父窗口小部件?

Zaz*_*Zaz 8 python gtk pygtk image

我有一个PyGTK应用程序,需要加载未知大小的图像,但我遇到的问题是,如果图像非常大或非常小,窗口布局变得扭曲和难以使用.我需要一些方法使图像自动缩放以适合其父窗口小部件.不幸的是,经过一些研究后,似乎没有代码,内置或其他方式,可以完成我正在寻找的东西.

我怎么能写点什么呢?我原本以为有人会为此编写一些代码; 有什么我错过了吗?

Jon*_*Lee 8

您可以使用widget.get_allocation()来查找父窗口小部件的大小,使用pixbuf.scale_simple来缩放图像,如下所示:

allocation = parent_widget.get_allocation()
desired_width = allocation.width
desired_height = allocation.height

pixbuf = gtk.gdk.pixbuf_new_from_file('your_image.png')
pixbuf = pixbuf.scale_simple(desired_width, desired_height, gtk.gdk.INTERP_BILINEAR)
image = gtk.image_new_from_pixbuf(pixbuf)
Run Code Online (Sandbox Code Playgroud)

如果您希望每次调整窗口大小时图像都缩放,您必须在连接到父窗口小部件的size_allocate信号的函数中放置上面的代码(或类似的东西,以避免每次从磁盘加载图像) .要避免无限循环,请确保放在窗口小部件中的图像不会再次改变其大小.

参考文献: