TypeError: 'module' object is not callable

Résolu
firpic Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   -  
firpic Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, avant que vous me le dite, j'ai d'abord regarder sur internet si il y avait une solution mais aucune ne fonctionne. Comme dit dans le titre, l'objet 'module' ne peut pas etre appele, je comprend pas alors que sur un autre scripts, la meme ligne fonctionne,

Voici la ligne qui pose porbleme:
root = tk()


Et voici l'erreur :
Traceback (most recent call last):
File "g:\Mon Drive\WorkSpace\LaunchAppStream\main.py", line 4, in <module>
root = tk()
TypeError: 'module' object is not callable


voici mon code au complet :
import tkinter as tk
from PIL import ImageTk, Image

root = tk()
class App(tk.Tk(), root):
        frame = tk.frame(root, padding=10)

        def __init__(self):
                tk.Tk.__init__(self)
                self.Widget()

        def Widget(self, root, frame, ImageLoad, ContentFrame, CommandBtn):
                self.frame.pack()

                # pack
                self.Name.pack(side=TOP)
                self.NetflixLogo.pack(side=LEFT)
                self.DisneyPlusLogo.pack(side=LEFT)
                self.AnimeDigitalNetworkLogo.pack(side=LEFT)
                self.YoutubeLogo.pack(side=LEFT)
                self.FirefoxLogo.pack(side=LEFT)
                self.QuitBtn.pack(side=BOTTOM)


        def ImageLoad(self):
                # Logo des service de streaming
                self.NetflixImg = ImageTk.PhotoImage(Image.open("src/netflix.jpg"))
                self.DisneyPlusImg = ImageTk.PhotoImage(Image.open("src/disneyplus.jpg"))
                self.AnimeDigitalNetworkImg = ImageTk.PhotoImage(Image.open("src/animedigitalnetwork.jpg"))
                self.YoutubeImg = ImageTk.PhotoImage(Image.open("src/youtube.jpg"))
                self.FirefoxImg = ImageTk.PhotoImage(Image.open("src/firefox.jpg"))


        def ContentFrame(self, frame, root):
                # contenu de la frame
                # title
                self.Name = tk.Label(frame, anchor='n', text="Menu")
                # image
                self.NetflixLogo = tk.Button(frame, command=NetflixF(), image=NetflixImg)
                self.DisneyPlusLogo = tk.Button(frame, command=DisneyPlusF(), image=DisneyPlusImg)
                self.AnimeDigitalNetworkLogo = tk.Button(frame, command=AnimeDigitalNetworkF(), image=AnimeDigitalNetworkImg)
                self.YoutubeLogo = tk.Button(frame, command=YoutubeF(), image=YoutubeImg)
                self.FirefoxLogo = tk.Button(frame, command=FirefoxF(), image=FirefoxImg)
                # button
                self.QuitBtn = tk.Button(frame, text="Quitter", command=root.destroy)


        class CommandBtn():
                # fonction
                def NetflixF(self):
                        print("Netflix")

                def DisneyPlusF(self):
                        print("DisneyPlus")

                def AnimeDigitalNetworkF(self):
                        print("Anime Digital Network")

                def YoutubeF(self):
                        print("Youtube")

                def FirefoxF(self):
                        print("Firefox")


        root.mainloop()
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
tu peux supprimer cette ligne, elle ne sert à rien dans ton code.
1
firpic Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   1
 
Si, elle me sert a faire la frame et a lancer le script aux lignes 6 et 66 sinon je ne peut ni creer la frame ni lancer le programme
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > firpic Messages postés 90 Date d'inscription   Statut Membre Dernière intervention  
 
dans d'autres code, tu as sans doute fait un autre
import
.
l'import ici est parfait, et tu dois donc faire
root = tk.Tk()
0
firpic Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci, j'ai regarder et vous avez raison j'en ai pas besoin. J'ai donc change le code mais toujours des erreur, j'ai reussi a en regle 1 a 2.

mais voici la nouvelle erreur:
Traceback (most recent call last):
File "g:\Mon Drive\WorkSpace\LaunchAppStream\main.py", line 67, in <module>
app = App()
TypeError: __init__() missing 3 required positional arguments: 'ImageLoad', 'ContentFrame', and 'CommandBtn'


Mais je ne comprend pas alors que j'ai mis ces 3 arguments dans
__init__()
.

Et voici le nouveau code :
import tkinter as tk
from PIL import ImageTk, Image


class App(tk.Tk):

        def __init__(self, ImageLoad, ContentFrame, CommandBtn):
                tk.Tk.__init__(self, ImageLoad, ContentFrame, CommandBtn)
                self.Widget(ImageLoad, ContentFrame, CommandBtn)

        def Widget(self, ImageLoad, ContentFrame, CommandBtn):
                ImageLoad()
                ContentFrame()
                CommandBtn()
                # pack
                self.Name.pack(side=TOP)
                self.NetflixLogo.pack(side=LEFT)
                self.DisneyPlusLogo.pack(side=LEFT)
                self.AnimeDigitalNetworkLogo.pack(side=LEFT)
                self.YoutubeLogo.pack(side=LEFT)
                self.FirefoxLogo.pack(side=LEFT)
                self.QuitBtn.pack(side=BOTTOM)


        def ImageLoad(self):
                # Logo des service de streaming
                self.NetflixImg = ImageTk.PhotoImage(Image.open("src/netflix.jpg"))
                self.DisneyPlusImg = ImageTk.PhotoImage(Image.open("src/disneyplus.jpg"))
                self.AnimeDigitalNetworkImg = ImageTk.PhotoImage(Image.open("src/animedigitalnetwork.jpg"))
                self.YoutubeImg = ImageTk.PhotoImage(Image.open("src/youtube.jpg"))
                self.FirefoxImg = ImageTk.PhotoImage(Image.open("src/firefox.jpg"))


        def ContentFrame(self, frame, root):
                # contenu de la frame
                # title
                self.Name = tk.Label(frame, anchor='n', text="Menu")
                # image
                self.NetflixLogo = tk.Button(frame, command=NetflixF(), image=NetflixImg)
                self.DisneyPlusLogo = tk.Button(frame, command=DisneyPlusF(), image=DisneyPlusImg)
                self.AnimeDigitalNetworkLogo = tk.Button(frame, command=AnimeDigitalNetworkF(), image=AnimeDigitalNetworkImg)
                self.YoutubeLogo = tk.Button(frame, command=YoutubeF(), image=YoutubeImg)
                self.FirefoxLogo = tk.Button(frame, command=FirefoxF(), image=FirefoxImg)
                # button
                self.QuitBtn = tk.Button(frame, text="Quitter", command=root.destroy)


        class CommandBtn():
                # fonction
                def NetflixF(self):
                        print("Netflix")

                def DisneyPlusF(self):
                        print("DisneyPlus")

                def AnimeDigitalNetworkF(self):
                        print("Anime Digital Network")

                def YoutubeF(self):
                        print("Youtube")

                def FirefoxF(self):
                        print("Firefox")


if __name__ == "__main__":
    app = App()
    app.title("Choice Launch App")
    app.mainloop()
0