Bonsoir,

je début en python et j'aimerais pouvoir faire une sorte de Paint pour m'entrainer ainsi d'abord, je veux charger une image dans une fenêtre.
Mon soucis est que je n'arrive pas à mettre le nom du fichier en variable globale pour y accéder lors de l'affichage.
Merci de votre d'aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#-* coding: iso-8859-1 -*-
import sys
from PySide import QtCore
from PySide import QtGui
 
h = 600 
l = 800
nouvelle_valeur=''
name=''
class ImageLoader(QtGui.QMainWindow):
#    
#    def set_name(self,nouvelle_valeur):
#        """ global name Fonction nous permettant de tester la portée des variables
#    définies dans notre corps de fonction.
#    """
#    
#    print "Nouvelle valeur : " + nouvelle_valeur
#    print "fin de la nouvelle valeur"
#    # On essaye d'afficher la variable var, si elle existe
#    try:
#        print("Avant l'affectation, notre variable var vaut {0}.".format(name))
#    except NameError:
#        print("La variable var n'existe pas encore.")   
#        name = nouvelle_valeur
#        print("Après l'affectation, notre variable var vaut{0}.".format(name))
#   
#    def get_name(self):
#        return name
 
#Creation d'un slot personnalise  
    def openDial(self) :
        global name
        print " Ouverture du fichier "
        dialog = QtGui.QFileDialog.getOpenFileName(self, "Open Image", "C:/", "Image Files (*.png *.jpg *.bmp)")
        #get from tuple the name of file
        print dialog[0]  
        name=dialog[0]
#        self.set_name(name)
#        return name
 
#get image and print her
#        if dialog.selectedFiles:
#            fileNames = dialog.selectedFiles()
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.resize(l,h)
        self.setFont(QtGui.QFont("Verdana"))
        self.setWindowTitle("Image loader")
        try:
            self.setWindowIcon(QtGui.Icon("icon.jpg"))
        except:pass
 
        fen = QtGui.QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((fen.width()-size.width())/2, (fen.height()-size.height())/2)
 
 
        menubar = self.menuBar() 
        file_ = menubar.addMenu("File")
        edit_  = menubar.addMenu("Edit")
 
        #Creation de l'action Fermer.
        #QAction recoit cinq parametres qui sont le titre, le parent, 
        #le raccourci clavier, le message qui apparaitra dans la barre de statut et enfin le slot qui sera appele.
 
        self.menuopen= QtGui.QAction("Open",self,triggered=self.openDial)
        file_.addAction(self.menuopen)
        self.menusave = QtGui.QAction("Save",self,triggered=self.close)
        file_.addAction(self.menusave)
        self.menuquit = QtGui.QAction("Quit", self,triggered=self.close)   
        file_.addAction(self.menuquit)
 
        print "Valeur du name dans le main avt if " + name
        print "fin print"
 
        if name!='':
            label = QtGui.QLabel("", self)
            label.move(600, 400)
            print "Valeur du name dans le main avec if " + name
            print "fin print"
            label.setPixmap(QtGui.QPixmap(name))
 
 
 
 
app = QtGui.QApplication(sys.argv)
imageLoader = ImageLoader()
imageLoader.show()
sys.exit(app.exec_())
Ici, j'ai essayé deux solutions,une avec une variable globale pour récupérer le nom du fichier image à afficher et avec des gets/sets.