IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Afficher image avec menu


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Afficher image avec menu
    Bonjour,
    Je débute aujourd'hui en python et je cherche à créer un menu qui puisse sélectionner une image et faire du traitement d'image suivant le menu que l'on aura sélectionner comma par exemple transformer cette image en niveau de gris.
    Cependant, je sollicite votre aide car j'arrive à ouvrir l'explorateur afin de sélectionner l'image mais je n'arrive pas à réutiliser cette dernière afin de pouvoir faire des opération dessus.
    Merci de votre précieuse aide !
    Et voici mon code:

    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
    class MyWindow(Tk):
     
        def __init__(self):
            Tk.__init__(self)
            self.createMenuBar()
     
            self.geometry( "300x200" )
            self.title( "Mon menu" )
     
        def createMenuBar(self):
            menuBar = Menu(self)
     
            menuFile = Menu(menuBar, tearoff=0)
            menuFile.add_command(label="New", command=self.doSomething)
            menuFile.add_command(label="Open", command=self.openFile)
            menuFile.add_command(label="Save", command=self.doSomething)
            menuFile.add_separator()
            menuFile.add_command(label="Conversion en noir", command=self.doSomething1)
            menuFile.add_separator()
            menuFile.add_command(label="Exit", command=self.quit)
            menuBar.add_cascade( label="File", menu=menuFile)
     
            menuEdit = Menu(menuBar, tearoff=0)
            menuEdit.add_command(label="Undo", command=self.doSomething)
            menuEdit.add_separator()
            menuEdit.add_command(label="Copy", command=self.doSomething)
            menuEdit.add_command(label="Cut", command=self.doSomething)
            menuEdit.add_command(label="Paste", command=self.doSomething)
            menuBar.add_cascade( label="Edit", menu=menuEdit)
     
     
     
            menuHelp = Menu(menuBar, tearoff=0)
            menuHelp.add_command(label="About", command=self.doAbout)
            menuBar.add_cascade( label="Help", menu=menuHelp)
     
     
     
            self.config(menu = menuBar)        
     
        def openFile(self):
            file = askopenfilename(title="Choose the file to open", 
                    filetypes=[("PNG image", ".png"), ("GIF image", ".gif"), ("All files", ".*")])
            print( file )
     
     
        def doSomething(self):
            print("Menu clicked")
     
        def doSomething1(self):
            print("Menu clicked wesh")
            Mafenetre = Tk()                
            Mafenetre.title("Image")                                  # Titre de la fenetre
            Canevas = Canvas(Mafenetre)              
     
            filename = tkinter.filedialog.askopenfilename(title="Ouvrir une image",filetypes=[('jpg files','.jpg'),('bmp files','.bmp'),('all files','.*')]) 
     
            photo = ImageTk.PhotoImage(file=filename) 
     
            def rgb2gray(rgb):
                return np.dot(rgb[...,:3], [0.299, 0.587, 0.144])
     
            img = mpimg.imread(photo)
            gray = rgb2gray(img)
            plt.imshow(gray, cmap = plt.get_cmap('gray'))
            plt.show()
     
            print (root.filename)
     
     
        def doAbout(self):
            messagebox.showinfo("My title", "My message")
     
     
    window = MyWindow()

  2. #2
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    pour pouvoir utiliser le nom du fichier dans une méthode de ta classe, lie le à self:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from tkinter.filedialog import askopenfilename
    class selection_image():
        def __init__(self):
            pass
        def openFile(self):
            self.file = askopenfilename(title="Choose the file to open", 
                    filetypes=[("PNG image", ".png"), ("GIF image", ".gif"), ("All files", ".*")])
     
        def affiche_nom_image(self):
            print(self.file)
    a = selection_image()
    a.openFile()
    a.affiche_nom_image()
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de votre réponse ! Je teste ça !

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Malheureusement, je n'arrive pas à afficher l'image, un erreur apparait sur __init__ ou encore window=MyWindow().
    Mon code ressemble à ça après plusieurs tentative:

    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
    class MyWindow(Tk):
     
        def __init__(self):
            Tk.__init__(self)
            self.createMenuBar()
     
            self.geometry( "300x200" )
            self.title( "Mon menu" )
     
        def createMenuBar(self):
            menuBar = Menu(self)
     
            menuFile = Menu(menuBar, tearoff=0)
            menuFile.add_command(label="New", command=self.doSomething)
            menuFile.add_command(label="Open", command=self.openFile)
            menuFile.add_command(label="Save", command=self.doSomething)
            menuFile.add_separator()
            menuFile.add_command(label="Conversion en noir", command=self.doSomething1)
            menuFile.add_separator()
            menuFile.add_command(label="Exit", command=self.quit)
            menuBar.add_cascade( label="File", menu=menuFile)
     
            menuEdit = Menu(menuBar, tearoff=0)
            menuEdit.add_command(label="Undo", command=self.doSomething)
            menuEdit.add_separator()
            menuEdit.add_command(label="Copy", command=self.doSomething)
            menuEdit.add_command(label="Cut", command=self.doSomething)
            menuEdit.add_command(label="Paste", command=self.doSomething)
            menuBar.add_cascade( label="Edit", menu=menuEdit)
     
     
     
            menuHelp = Menu(menuBar, tearoff=0)
            menuHelp.add_command(label="About", command=self.doAbout)
            menuBar.add_cascade( label="Help", menu=menuHelp)
     
     
     
            self.config(menu = menuBar)        
     
        def openFile(self):
            file = askopenfilename(title="Choose the file to open", 
                    filetypes=[("PNG image", ".png"), ("GIF image", ".gif"), ("All files", ".*")])
            print( file )
     
     
        def doSomething(self):
            print("Menu clicked")
     
        def doSomething1(self):
            print("Menu clicked wesh")
     
        class selection_image():
            def init(self):
                pass
            def openFile(self):
     
                self.file = askopenfilename(title="Choose the file to open", 
                            filetypes=[("PNG image", ".png"), ("GIF image", ".gif"), ("All files", ".*")])
     
            def affiche_nom_image(self):
                print(self.file)
        a = selection_image()
        a.openFile()
        a.affiche_nom_image()
     
     
     
        def rgb2gray(rgb):
                return np.dot(rgb[...,:3], [0.299, 0.587, 0.144])
     
            img = mpimg.imread(a)
            gray = rgb2gray(img)
            plt.imshow(gray, cmap = plt.get_cmap('gray'))
            plt.show()
     
            print (root.filename)
     
     
     
     
    window = MyWindow()

  5. #5
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    Il y a beaucoup (trop) de chose à reprendre dans ton code.
    Je pense que tu ne maîtrises pas la construction d'une classe. Aussi tu devrais t'entrainer à écrire des classes simples avant de te lancer à véritablement coder.
    Ceci dit, je t'invite à réécrire dans un premier temps un code fonctionnel qui n'utilise pas de classe mais juste des fonctions.
    Par la suite, je t'aiderai à écrire ta classe .
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

Discussions similaires

  1. [XL-2007] afficher image avec lien label
    Par Pompaero dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/10/2015, 11h46
  2. Afficher image avec radioButton
    Par Vanessa48 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/04/2013, 08h27
  3. Association d'images avec menu deroulant css ou pas?
    Par Benjea dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 27/10/2012, 13h53
  4. afficher image avec ActiveX
    Par Mat32 dans le forum LabVIEW
    Réponses: 5
    Dernier message: 18/12/2009, 10h31
  5. afficher image avec file
    Par niceen dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 18/02/2008, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo