TypeError: 'module' object is not callable

Résolu/Fermé
firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 - 26 oct. 2021 à 16:09
firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 - 27 oct. 2021 à 12:18
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 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024 1 480
26 oct. 2021 à 16:24
bonjour,
tu peux supprimer cette ligne, elle ne sert à rien dans ton code.
1
firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 1
26 oct. 2021 à 19:40
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 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024 1 480 > firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022
26 oct. 2021 à 22:48
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 jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 1 > yg_be Messages postés 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024
Modifié le 27 oct. 2021 à 12:27
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