2010-08-07 3 views

Répondre

3

Je ne sais pas précisément à l'aide PyGTK mais: xdg-open ouvre l'application par défaut pour un fichier en cours d'exécution afin quelque chose comme ça devrait fonctionner:

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

EDIT: Je suggère d'utiliser le module comme subprocess dans les commentaires. Je ne suis pas sûr exactement comment l'utiliser encore si je viens d'utiliser os.system dans l'exemple pour afficher xdg-open.

+0

fonctionne très bien, merci! – mooware

+1

Utilisation inutile de 'system'. Cela devrait être 'subprocess.check_call ([" xdg-open ", nom de fichier])'. – Philipp

+0

Salut Philipp, quel est le problème avec l'utilisation de 'système'? – mooware

3

Sous GNU/Linux, utilisez xdg-open, sous Mac, utilisez open, sous Windows, utilisez start. En outre, utilisez subprocess, sinon vous risquez de bloquer votre application lorsque vous appelez l'application externe.

C'est ma mise en œuvre, elle pourra être utile: 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 
Questions connexes