Missing 1 required positional argument: 'self'
Résolu
Bonjour,
J'essaye de crée un menu de jeu pour mon premier projet python. Je suis débutant et j'ai un problème en voulant importer mes jeux dans mon menu.
J'ai compris qu'il fallait utiliser
Je suis sous python 3.5 windows 10, et voila le message d'erreur:
Voila mon menu:
Et voila mon jeu qui pose problème:
Merci d'avance pour toute aide donner je suis vraiment coincer je ne trouve rien sur le net!
J'essaye de crée un menu de jeu pour mon premier projet python. Je suis débutant et j'ai un problème en voulant importer mes jeux dans mon menu.
J'ai compris qu'il fallait utiliser
selfmais je ne sais pas pourquoi ça ne marche pas !
Je suis sous python 3.5 windows 10, et voila le message d'erreur:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python37\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:/Users/manuel.gauthier/PycharmProjects/Apprentissage/Exercice.py", line 15, in <lambda>
c = Button(top, text="Just Price Game", command=lambda: just_price_game())
TypeError: just_price_game() missing 1 required positional argument: 'self'
Voila mon menu:
# !/usr/bin/python3 from tkinter import * from dice import * from justprice import * top = Tk() top.geometry("300x100") def helloCallBack(): msg = messagebox.showinfo( "Hello Python", "Hello World") B = Button(top, text="Dice Game", command=lambda: dice_game()) B.place(x=50, y=50) c = Button(top, text="Just Price Game", command=lambda: just_price_game()) c.place(x=150, y=50) top.mainloop()
Et voila mon jeu qui pose problème:
def just_price_game(self): import datetime import time import webbrowser import random from colorama import Fore, Style seconds = 0 # Données de temps update_time = datetime.datetime.now() time_given = update_time + datetime.timedelta(0, 60) # days, seconds, then other fields. start_time = datetime.datetime.now() # Choisis un site au hasard et utilise le prix comme juste prix site_list = ["https://image.darty.com/gros_electromenager/refrigerateur-congelateur-refrigerateur-cong/refrigerateur-congelateur_haut/samsung_rt32k5000s9_t1603074206908A_163706861.jpg", "https://maxidiscount.ch/wp-content/uploads/2017/08/2017_0220_main1-1.jpg", "https://images.caradisiac.com/images/0/4/8/3/170483/S1-vente-aux-encheres-nouveau-record-pour-une-ferrari-250-gto-561193.jpg", "https://youtu.be/AFrppYjb-Hc", "https://www.achetermonchien.com/wp-content/uploads/sites/5/p1210939-810x550.jpg", "https://dyw7ncnq1en5l.cloudfront.net/optim/produits/363/42243/nvidia-titan-xp-collector-s-edition-star-wars_d647a13fe3d76576__450_400.jpg", "https://static.bhphoto.com/images/images500x500/apple_mqk62ll_a_watch_series_3_42mm_1505400411000_1362215.jpg", "http://www.investir-actif.com/wp-content/uploads/2014/04/lingot-or-1kg-gold-bar.jpg", "https://www.deltanautic.fr/8502/barque-armor-ria-430.jpg", "https://i2.cdscdn.com/pdt2/5/4/3/1/700x700/nes0000003111543/rw/nespresso-lot-de-cafe-fort-50-capsules.jpg", "https://picclick.com/Lollapalooza-2018-Wristband-Tickets-Chicago-SUNDAY-8-5-General-163176618876.html#&gid=1&pid=1"] price_list = [629, 58, 44000000, 5700000, 1200, 1485, 399, 38000, 1750, 39, 335] just_price_site = random.sample(site_list, 3) index_site_list = site_list.index(just_price_site[0]) just_price = (price_list[index_site_list]) # The value that the player Bet user_price = 0 # Set count and points self.count = 0 # count + 1 point after achieving a level self.point = 0 self.last_chance = 0 print("Le but du jeu est de trouvé le juste prix de trois objets qui te seront montrer si tu y arrive tu sera gratifier en ayant ton pseudo dans les logs du jeu!") diff = input("Choisis la difficulté a laquel tu veux jouer!(F/M/D) pour facile/moyen/difficile(obvious)") if diff == "F": print("Tu as choisis le mode Facile tu as 3 niveaux a passer accroche toi! ") seconds = 75 webbrowser.open(just_price_site[point]) if diff == "M": print("Tu as choisis le mode Moyen tu as 3 niveaux a passer accroche toi! ") seconds = 60 webbrowser.open(just_price_site[point]) if diff == "D": print("Tu as choisis le mode difficile, tu as 3 niveaux a passer accroche toi! ") seconds = 45 webbrowser.open(just_price_site[point]) def game(self): global seconds, time_given, start_time, point, count, last_chance while True: print("Vous avez", seconds, "seconds pour trouver la valeur du biens (l'objet est toujours neuf!)") ready = input("Vous êtes prêt ?(oui, non)") if ready == "oui": print("3") time.sleep(1) print("2") time.sleep(1) print("1") time.sleep(1) update_time = datetime.datetime.now() time_given = update_time + datetime.timedelta(0, seconds) start_time = datetime.datetime.now() break elif ready == "non": print("Tant pis pour toi le jeu à déja commencé!") break else: print("(L'indécision et l'inaction sont les parents de l'échec.) citation de Pierre Louis de Lacretelle :)") running = True while running: try: update_time = datetime.datetime.now() countdown = time_given - update_time time_taken = update_time - start_time if update_time < time_given: print("il reste", countdown, "secondes dépèche toi!") # arrète le jeu après 60s il a le droit a une dernière chance print(Style.RESET_ALL) elif update_time > time_given: print("Temps écoulé!") last_chance = int(input("Je suis gentil je te laisse une dèrnière chance!")) if last_chance == just_price: print("Bravo c'était juste... mais vous avez trouvé le juste prix au dernière essaie !") print("le juste prix était bien", just_price, "CHF.") count += 1 print("Cela vous a demandé", count, "essaies.") # fin du jeu point += 1 break elif last_chance != just_price_site: print("Le juste prix était", just_price, ",dommage tu réussira la prochaine fois!") quit() # demander à l'utilisateur d'entrer un prix dans la console user_price = int(input("Entrer un prix: ")) print("____________________________________________________________________") # si le prix est le meme que le juste prix if user_price == just_price: print("Bravo vous avez trouvé en", time_taken, "secondes !") print("le juste prix était bien", just_price, "CHF.") count += 1 print("Cela vous a demandé", count, "essaies.") point += 1 # fin du jeu break elif user_price > just_price: print(Fore.BLUE + "C'est moins") count += 1 # si le prix de l'utilisateur est inférieur au prix à trouver elif user_price < just_price: print(Fore.RED + "C'est plus") count += 1 except ValueError: print("Oops!") game(self) # level 1 if point == 1: print(Fore.YELLOW + "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-") print("Tu es arrivé au niveau 2 ! es-tu prêt?") webbrowser.open(just_price_site[1]) index_site_list = site_list.index(just_price_site[point]) just_price = (price_list[index_site_list]) count = 0 seconds -= 15 print(Style.RESET_ALL) game(self) # level 2 if point == 2: print(Fore.YELLOW + "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_") print("Bien joué tu es arrivé jusqu'au dernier Niveau es-tu prêt?") webbrowser.open(just_price_site[2]) index_site_list = site_list.index(just_price_site[point]) just_price = (price_list[index_site_list]) count = 0 seconds -= 15 print(Style.RESET_ALL) game(self) print(Fore.YELLOW + "VICTOIRE ! TU AS REUSSI TOUT LES NIVEAUX BRAVO!") # Winner get to write his name in the winner.txt file def winner(self): # Function name. fwu = open('winner.txt', 'w') # create or open user.txt file. while True: self.winner = input("Username: ") # takes the user input.e.g what username to register if len(winner) <= 12: fwu.write(winner) # this command should write input into the file fwu.close() else: print("The username length is too long (max 12") winner()
Merci d'avance pour toute aide donner je suis vraiment coincer je ne trouve rien sur le net!
A voir également:
- Missing one positional argument python
- Typeerror: pack_configure() missing 1 required positional argument: 'self' - Meilleures réponses
- Start() missing 1 required positional argument: 'self' - Meilleures réponses
- Citizen code python avis - Accueil - Outils
- One ui - Guide
- Sfr one shot - Forum SFR
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Ubuntu
- Désinstaller one drive - Guide
1 réponse
Bonjour
Concernant ton problème :
Bonne chance
Concernant ton problème :
-
self
est un nom utilisé quand on fait de la programmation objet en python, voir le mot cléclass
. Ici tu n'as pas de classe, doncself
est vu comme un argument de la fonctionjust_price_game
. Cette fonction attend donc un paramètre. Or à l'appel, tu n'en passes aucun, d'où le message d'erreur. A priori il n'y aucune raison dans ton cas de passer un tel argument. - Évite de définir des fonctions dans des fonctions tant que tu débutes. Idem pour les
import
. Tant que tu débutes je te conseille d'écrire par exemple :
#!/usr/bin/env python3 import package1 import package2 from package3 import truc1, truc2 ... def fonction1( ... ): instruction11 instruction12 def fonction2( ... ): instruction21 instruction22 ... def main(): # programme principale instruction_main1 instruction_main2 main()
- Quand tu seras plus à l'aise, tu pourras commencer à faire des classes :
#!/usr/bin/env python3 import package1 import package2 from package3 import truc1, truc2 ... class Classe1: def __init__(self, ...): instruction1 instruction2 def methode1(self, ...): instruction1 instruction2 ... ... def fonction1( ... ): instruction11 instruction12 def fonction2( ... ): instruction21 instruction22 ... def main(): # programme principale instruction_main1 instruction_main2 main()
Bonne chance
D'ici là, bonne continuation