Запустите просмотрщик изображений по умолчанию из программы pygtk - PullRequest
1 голос
/ 07 августа 2010

Я пишу приложение PyGTK GUI в Ubuntu для просмотра некоторых изображений, и я хотел бы открыть изображение в приложении для просмотра изображений по умолчанию при двойном щелчке (например, при его открытии в Nautilus). 1001 * Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 06 сентября 2012

В 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
3 голосов
/ 07 августа 2010

Я не знаю, как конкретно использовать PyGTK, но: xdg-open открывает приложение по умолчанию для файла, поэтому запуск чего-то подобного должен работать:

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

РЕДАКТИРОВАТЬ: Я бы предложил использовать модуль subprocess, как в комментариях. Я пока не уверен, как именно его использовать, поэтому я просто использовал os.system в примере, чтобы показать xdg-open.

2 голосов
/ 08 августа 2010

GTK (> = 2,14) имеет gtk_show_uri :

gtk.show_uri(screen, uri, timestamp)

Пример использования:

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

Относящиеся

...