2011-05-18 17 views
0

Il y a un bouton.
Lorsque vous cliquez dessus, le fichier C:\file.txt doit être ouvert avec l'éditeur de texte par défaut (comme si vous aviez double-cliqué).
Est-ce possible en pyQt? Le bouton est pressé -> le fichier est ouvert.
Tout ce que je peux google est juste des boîtes de dialogue, mais je n'en ai pas besoin.Ouvrir le fichier avec pyQt

file = 'C:\file.txt' 
widget.connect(button, QtCore.SIGNAL('clicked()'), ????) 

Comment cela peut-il être fait?

+0

Je pense que vous êtes beaucoup plus éloigné de ce que vous voulez que vous attendez probablement. Avez-vous un fonctionnement de l'interface graphique PyQt et ceci est seulement un exemple d'extrait, ou est-ce votre programme entier? –

+0

Oui, c'est un extrait. – Qiao

Répondre

2
def openFile(file): 
    if sys.platform == 'linux2': 
     subprocess.call(["xdg-open", file]) 
    else: 
     os.startfile(file) 

et modifiez votre 2ème ligne:

widget.connect(button, QtCore.SIGNAL('clicked()'), openFile(file)) 

Code pour l'ouverture du fichier copié à partir How to open a file with the standard application?

+0

Pourquoi le fichier est démarré lorsque je lance un script, aucun programme (bouton) n'est affiché? http://snipt.org/xJng. Il a certainement une connexion avec la ligne 'widget.connect' – Qiao

+1

& Qiao: la ligne source' connect (..., openFile (fichier)) '_will call_ openFile. Utilisez 'lambda: openFile (fichier)' pour vous connecter à une fonction qui appelle openFile, et non à ce que renvoie openFile(). :) – Macke

+0

vient de commencer une nouvelle question - http://stackoverflow.com/questions/6046362/pyqt-running-slot-from-the-start. Je relais n'a pas de patience) 'lambda:' fonctionne, mais c'est une boîte noire pour moi maintenant. – Qiao