从pygtk程序启动默认的图像查看器

我正在Ubuntu中编写一个PyGTK GUI应用程序来浏览一些图像,并且当它被双击时(比如在Nautilus中打开时),我想在默认的图像查看器应用程序中打开一个图像。
我该怎么做?

Solutions Collecting From Web of "从pygtk程序启动默认的图像查看器"

我不知道具体使用PyGTK,但: xdg-open打开文件的默认应用程序,所以运行这样的事情应该工作:

 import os os.system('xdg-open ./img.jpg') 

编辑:我会建议在评论中使用subprocess模块。 我不确定如何使用它,所以我只是在示例中使用os.system来显示xdg-open

在GNU / Linux中使用xdg-open ,在Mac中使用open ,在Windows中使用start 。 此外,使用subprocess ,如果不是,您可能会在调用外部应用程序时阻止您的应用程序。

这是我的实现,希望它有帮助: http : //goo.gl/xebnV

 import sys import subprocess import webbrowser def default_open(something_to_open): """ Open given file with default user program. """ # Check if URL if something_to_open.startswith('http') or something_to_open.endswith('.html'): webbrowser.open(something_to_open) return 0 ret_code = 0 if sys.platform.startswith('linux'): ret_code = subprocess.call(['xdg-open', something_to_open]) elif sys.platform.startswith('darwin'): ret_code = subprocess.call(['open', something_to_open]) elif sys.platform.startswith('win'): ret_code = subprocess.call(['start', something_to_open], shell=True) return ret_code 

GTK(> = 2.14)有gtk_show_uri :

 gtk.show_uri(screen, uri, timestamp) 

用法示例:

 gtk.show_uri(None, "file:///etc/passwd", gtk.gdk.CURRENT_TIME) 

有关

  • 如何用标准应用程序打开文件?