在PyGTK中,如何简单地显示PNG文件?

4 投票
1 回答
2976 浏览
提问于 2025-04-16 18:18

下面的PyGTK代码可以在一个窗口中显示一个PNG文件。

有没有更简单或者更好的方法来显示这个PNG文件,比如使用gtk.DrawingArea?比如说,怎么调整这个文件的大小呢?

import gtk
import pygtk
pygtk.require('2.0')

class Gui:

    def __init__(self):

        # Create an Image object for a PNG file.
        file_name = "file.png"
        pixbuf = gtk.gdk.pixbuf_new_from_file(file_name)
        pixmap, mask = pixbuf.render_pixmap_and_mask()
        image = gtk.Image()
        image.set_from_pixmap(pixmap, mask)

        # Create a window.
        window = gtk.Window()
        window.set_title("PNG file")
        window.connect("destroy", gtk.main_quit)

        # Show the PNG file in the window.
        window.add(image)
        window.show_all()

if __name__ == "__main__":
    Gui()
    gtk.main()

致谢:我使用了网上其他人的代码来创建上面的代码。

1 个回答

6

你应该直接调用 image.set_from_file,而不是先创建一个pixbuf和一个pixmap。至于如何处理调整大小的问题,我曾经直接使用过gtk.DrawingArea,通过configure信号来获取绘图区域的高度和宽度,然后用expose-event事件在整个区域上用cairo进行绘制。不过,也可能有办法使用gtk.Image来实现。

撰写回答