TypeError: 'module' object is not callable
Résolu
firpic
Messages postés
101
Statut
Membre
-
firpic Messages postés 101 Statut Membre -
firpic Messages postés 101 Statut Membre -
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:
Et voici l'erreur :
voici mon code au complet :
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()
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
tu peux supprimer cette ligne, elle ne sert à rien dans ton code.-
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
- 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()
-