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

时间:2010-08-07 16:21:16

标签: python linux pygtk

我正在Ubuntu中编写一个PyGTK GUI应用程序来浏览一些图像,我想在双击时在默认图像查看器应用程序中打开图像(就像在Nautilus中打开它一样)。登记/> 我该怎么办?

3 个答案:

答案 0 :(得分:3)

我不知道具体使用PyGTK但是:xdg-open打开文件的默认应用程序,所以运行这样的东西应该有效:

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

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

答案 1 :(得分:3)

在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

答案 2 :(得分:2)

GTK(> = 2.14)有gtk_show_uri

gtk.show_uri(screen, uri, timestamp)

使用示例:

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

相关