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

Python Discussion :

required positional argument


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 25
    Par défaut required positional argument
    Bonjour, je suis entrain de développer un logiciel, mais je n'arrive pas à me défaire d'une erreur.... En effet dans me code pour accéder à la page une ou deux j'ai mis en place deux boutons....
    Mais j'aimerai pouvoir aller à la page une à partir de "Viewing graphics" donc j'ai eu comme idée de y mettre une commande sauf que à chaque fois il m'affiche une erreur....
    " menubar = MenuBar(self)
    TypeError: __init__() missing 1 required positional argument: 'controller'
    "

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
     
    import tkinter as tk
    from tkinter import ttk, messagebox
    from tkinter import *
     
    class window(tk.Tk):
        def __init__(self,*args,**kwargs):
             tk.Tk.__init__(self,*args,**kwargs)
             # Application design
             self.title("Visual Tracer")
             self.geometry("800x600")
             self.iconbitmap("index_FGQ_icon.ico")
             menubar = MenuBar(self)
             self.config(menu=menubar)
     
     
             # structure
             container = tk.Frame(self)
     
             container.pack(side="top",fill="both",expand=1)
     
             container.grid_rowconfigure(0,weight=1)
             container.grid_columnconfigure(1, weight=1)
     
             self.frames = {}
     
             for F in (StartPage, PageOne, PageTwo):
     
                frame = F(container,self)
     
                self.frames[F] = frame
     
                frame.grid(row=0, column=0, sticky="nsew")
     
             self.show_frame(StartPage)
     
        def show_frame(self,cont):
            frame = self.frames[cont]
            frame.tkraise()
     
     
     
    class StartPage(tk.Frame):
        def __init__(self,parent,controller):
            tk.Frame.__init__(self,parent)
            label = tk.Label(self,text="Menu")
            label.pack(padx=960,pady=10)
     
            button1 = ttk.Button(self, text="Visit Page 1",
                                command=lambda:controller.show_frame(PageOne))
            button1.pack()
     
            button2 = ttk.Button(self, text="Page Two",
                                command=lambda:controller.show_frame(PageTwo))
            button2.pack()
     
     
    class PageOne(tk.Frame):
        def __init__(self,parent,controller):
            tk.Frame.__init__(self,parent)
            label = tk.Label(self,text="PageOne")
            label.pack(padx=10,pady=10)
     
            button1 = ttk.Button(self, text="back to home",
                                command=lambda:controller.show_frame(StartPage))
            button1.pack()
     
            button2 = ttk.Button(self, text="Page Two",
                                command=lambda:controller.show_frame(PageTwo))
            button2.pack()
     
     
     
    class PageTwo(tk.Frame):
        def __init__(self,parent,controller):
            tk.Frame.__init__(self,parent)
            label = tk.Label(self,text="PageTwo")
            label.pack(padx=10,pady=10)
     
            button1 = ttk.Button(self, text="back to home",
                                command=lambda:controller.show_frame(StartPage))
            button1.pack()
     
            button2 = ttk.Button(self, text="Page One",
                                command=lambda:controller.show_frame(PageOne))
            button2.pack()
     
    class MenuBar(tk.Menu):
        def __init__(self, parent,controller):
            tk.Menu.__init__(self, parent)
     
            FileMenu = tk.Menu(self, tearoff=0)
            self.add_cascade(label="File",underline=0, menu=FileMenu)
            FileMenu.add_command(label="Open file",accelerator="Ctrl+O",compound=tk.LEFT,command=lambda:self.start_new_file())
            FileMenu.add_command(label="Open new file",accelerator="Ctrl+N",compound=tk.LEFT)
            FileMenu.add_command(label="Save as",accelerator="Ctrl+S", compound=tk.LEFT)
            FileMenu.add_command(label="Quit", accelerator="Ctrl+Q",command=self.quit)
     
            EditionMenu = tk.Menu(self, tearoff=0)
            self.add_cascade(label="Edition", menu=EditionMenu)
            EditionMenu.add_command(label="Copy", accelerator="Ctrl+V", compound=tk.LEFT)
            EditionMenu.add_command(label="Paste",accelerator="Ctrl+C", compound=tk.LEFT)
            EditionMenu.add_command(label="Cut",accelerator="Ctrl+X", compound=tk.LEFT)
            EditionMenu.add_separator()
            EditionMenu.add_command(label="Select all",accelerator="Ctrl+A", compound=tk.LEFT)
            EditionMenu.add_command(label="Cancel",accelerator="Ctrl+", compound=tk.LEFT)
            EditionMenu.add_command(label="Create new window",accelerator="Ctrl+O", compound=tk.LEFT)
            EditionMenu.add_command(label="Other short cut",accelerator="Ctrl+H", compound=tk.LEFT)
     
            Setting_simulation  = tk.Menu(self, tearoff=0)
            self.add_cascade(label="Setting Simulation", menu=Setting_simulation)
            Setting_simulation.add_command(label="Weather setting", compound=tk.LEFT)
            Setting_simulation.add_command(label="Rocket setting", compound=tk.LEFT)
            Setting_simulation.add_command(label="Viewing graphics", compound=tk.LEFT,command=lambda:controller.show_frame(PageOne))
            Setting_simulation.add_command(label="Setting live graphic", compound=tk.LEFT)
     
            Simulation = tk.Menu(self,tearoff=0)
            self.add_cascade(label="Simulation", menu=Simulation)
            Simulation.add_command(label="Graphic",accelerator="Ctrl+G", compound=tk.LEFT,command=lambda:graphic())
            Simulation.add_command(label="Live graphic",accelerator="Ctrl+L", compound=tk.LEFT,command=lambda:live_graphic())
     
            Help = tk.Menu(tearoff=0)
            self.add_cascade(label="Help", menu=Help)
            Help.add_command(label="Documentation", compound=tk.LEFT)
            Help.add_command(label="About", compound=tk.LEFT,command=self.Information_about_VisualTracer)
     
        def start_new_file(self):
            exec(open("./test_2.py").read())
        def  Information_about_VisualTracer(self):
            messagebox.showinfo("Visual Tracer", "Name: Visual Tracer ©\nVersion: 1.0\nOS: Windows10\nCreation year: 2020")
     
    class graphic(Toplevel):
        def __init__(self,*args,**kwargs):
            Toplevel.__init__(self)
            self.title("Graphic")
            self.geometry("800x600")
            self.iconbitmap("index_FGQ_icon.ico")
     
    class live_graphic(Toplevel):
        def __init__(self,*args,**kwargs):
            Toplevel.__init__(self)
            self.title("Live Graphic")
            self.geometry("800x600")
            self.iconbitmap("index_FGQ_icon.ico")
     
     
     
    app = window()
    app.mainloop()



    bonne fin de journée.....

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    D'où sort MenuBar ?

    Tu ne confonds pas avec Menu ?
    Ceci: http://effbot.org/tkinterbook/menu.htm

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 25
    Par défaut
    Le menubar est la classe que j’ai alloué pour mon menu mais le problème est qu’ il manque un argument .... mais je ne sais pas où et pourquoi .....

  4. #4
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 25
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    D'où sort MenuBar ?

    Tu ne confonds pas avec Menu ?
    Ceci: http://effbot.org/tkinterbook/menu.htm
    Mon menu s’affiche correctement mais dès lors que je mets ma fonction permettant d’accéder à la page à «*viewing graphics » il m’affiche l’erreur en question....

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par abcbbm Voir le message
    " menubar = MenuBar(self)
    TypeError: __init__() missing 1 required positional argument: 'controller'
    "
    C'est vous qui avez écrit la class MenuBar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class MenuBar(tk.Menu):
        def __init__(self, parent,controller):
            tk.Menu.__init__(self, parent)
    C'est qui parent? C'est qui controller?

    Lorsque vous récupérez du code sur Internet, vous ne pouvez le modifier que si vous comprenez ce qu'il fait. A défaut, vous ne pouvez rien en faire (l'encadrer?). Et on ne va pas pouvoir vous expliquer en quelques minutes les bases de la POO de la programmation que vous avez essayé de zapper.


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 25
    Par défaut
    Le code à été rédigé par moi-même avec les connaissances que je commence à acquérir en Programmation orienté objet....
    Parent est la classe mère en l’occurrence la classe "Window" et controller de l’abréviation "cont" qui vient de la classe show_frame....

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par abcbbm Voir le message
    Le code à été rédiger par moi même avec les connaissances que je commence à acquérir en Programmation orienté objet....
    Vous ne sauriez pas la nième personne à se prendre les pieds après avoir recopié cet exemple (pas très bon)...

    Citation Envoyé par abcbbm Voir le message
    Parent est la classe mère en l’occurrence la classe "Window" et controller de l’abréviation "cont" qui vient de la classe show_frame....
    Alors vous devriez savoir corriger le problème...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 25
    Par défaut
    A vrai dire non puisque lorsque je fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    menubar = MenuBar(self,cont)                       # "cont" n'est pas reconnu.... 
                                                                            self.config(menu=menubar)

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par abcbbm Voir le message
    A vrai die non puisque lorsque je fait cela : menubar = MenuBar(self,cont) "cont" n'est pas reconnu....
    self.config(menu=menubar)
    Certes mais puisque vous maîtrisez assez pour vous aventurer dans la POO, difficile de poser des questions où visiblement vous ignorez ce que sont les paramètres d'une fonction et portée des variables. Les tutos sont là pour vous expliquer ces choses là et il y a même plein d'exercices corrigés ou non pour s'entraîner.

    Vous débutez, on veut bien vous aider, mais il faut pouvoir se mettre à votre niveau. Si vous avez le niveau POO, on va pas vous expliquer les bases.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. meson :ERROR: All keyword arguments must be after positional arguments
    Par turboiii dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 16/05/2019, 10h53
  2. TypeError: f() missing 1 required positional argument: 'd'
    Par Gailletan2 dans le forum Général Python
    Réponses: 3
    Dernier message: 08/05/2019, 13h34
  3. [Python 3.X] Probleme de TypeError: <lambda>() missing 1 required positional argument: 'b'
    Par Tonivege dans le forum Général Python
    Réponses: 7
    Dernier message: 20/02/2018, 13h58
  4. Réponses: 2
    Dernier message: 23/08/2016, 11h22
  5. Erreur positional arguments
    Par daufinsyd dans le forum Général Python
    Réponses: 3
    Dernier message: 23/05/2014, 19h34

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