Python 如何显示来自web的图像?

Python 如何显示来自web的图像?,python,gtk,pygtk,Python,Gtk,Pygtk,我用python编写了这个简单的脚本: import gtk window = gtk.Window() window.set_size_request(800, 700) window.show() gtk.main() 现在,我想在此窗口中加载来自web(而不是来自PC)的图像,如下所示: 我该怎么做 另外,我不想下载图片!我只想从URL加载图像 下载图片。关于如何用python下载文件,谷歌提供了一些易于使用的库 将图像加载到小部件中。查看如何在GTK中显示图像 很抱歉没有详细说明

我用python编写了这个简单的脚本:

import gtk

window = gtk.Window()
window.set_size_request(800, 700)

window.show()
gtk.main()
现在,我想在此窗口中加载来自web(而不是来自PC)的图像,如下所示:

我该怎么做


另外,我不想下载图片!我只想从URL加载图像

  • 下载图片。关于如何用python下载文件,谷歌提供了一些易于使用的库

  • 将图像加载到小部件中。查看如何在GTK中显示图像

  • 很抱歉没有详细说明,但是答案会很长,你最好还是到别的地方读一下这些主题


    希望有帮助

    下面是一个使用WebKit的简单脚本:

    #!/usr/bin/env python
    import gtk
    import webkit
    
    window = gtk.Window()
    window.set_size_request(800, 700)
    webview = webkit.WebView()
    window.add(webview)
    window.show_all()
    
    webview.load_uri('http://www.dailygalaxy.com/photos/uncategorized/2007/05/05/planet_x.jpg')
    
    gtk.main()
    

    但请注意,这实际上是下载图像。

    这是从url下载图像,但将数据写入到文件中,而不是文件中:

    import pygtk
    pygtk.require('2.0')
    import gtk
    import urllib2
    
    class MainWin:
    
        def destroy(self, widget, data=None):
            print "destroy signal occurred"
            gtk.main_quit()
    
        def __init__(self):
            self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
            self.window.connect("destroy", self.destroy)
            self.window.set_border_width(10)
            self.image=gtk.Image()
            response=urllib2.urlopen(
                'http://www.dailygalaxy.com/photos/uncategorized/2007/05/05/planet_x.jpg')
            loader=gtk.gdk.PixbufLoader()
            loader.write(response.read())
            loader.close()        
            self.image.set_from_pixbuf(loader.get_pixbuf())
            # This does the same thing, but by saving to a file
            # fname='/tmp/planet_x.jpg'
            # with open(fname,'w') as f:
            #     f.write(response.read())
            # self.image.set_from_file(fname)
            self.window.add(self.image)
            self.image.show()
            self.window.show()
    
        def main(self):
            gtk.main()
    
    if __name__ == "__main__":
        MainWin().main()
    

    我想用GTK而不是Python来下载它,但除此之外,是的。我不想下载图像!我只想从URL加载图像:)@xRobot:你认为从URL加载图像具体涉及什么?@xRobot:提示--以“d”开头,以“ownloading it”结尾:如果你想在你的计算机上实际显示图像,你必须下载它。可以这样想:URL是指向某个对象的名称。如果你想展示这个东西,你需要得到这个名字后面的数据。这是web浏览器所做的,也是显示图像所必须做的。或者,您可以显示指向它的链接,这只是名称。它还需要pywebkitgtk,这不是一个小要求。我想您也可以使用libsoup,但我认为这最适合OP的需要;-)“另外,我不想下载图片!我只想从URL加载图片。”这是一个矛盾。“加载”=“下载”。你在网上使用图片的唯一方法就是下载。没有其他选择。你想干什么?