Python Forum
TypeError: exitfunc() missing 1 required positional argument: 'self'
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TypeError: exitfunc() missing 1 required positional argument: 'self'
#1
HI All,

I am new to the python, i am trying to call a method defined in the same class but getting an error as
" return self.func(*args)
TypeError: exitfunc() missing 1 required positional argument: 'self'"

The code is below : Trying to write a simple Menu window using tkinter.

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
from tkinter import *
import tkinter.messagebox
from tkinter.filedialog import askopenfilename
 
class menudiaplay:
 
    def __init__(self):
        self.exit = exit
 
    def function1(self):
     print("Menu is clicked")
 
 
    def openfile(self):
      name = askopenfilename()
      print(name)
 
    def function3(self):
       print("Undo is done")
 
    def exitfunc(self):
        self.exit = tkinter.messagebox.askquestion("Question", "Really want to exit")
        if self.exit == 'yes':
            self.root.destroy()
        else:
            print("Hello welcome back")
 
 
    root = Tk()
    mymenu = Menu(root)
    root.config(menu=mymenu)
 
 
    filesubmenu = Menu(mymenu)
 
    mymenu.add_cascade(label="File", menu=filesubmenu)
 
    filesubmenu.add_cascade(label="New Project", command=function1)
    filesubmenu.add_cascade(label="New", command=function1)
    filesubmenu.add_cascade(label="open File", command=askopenfilename)
    filesubmenu.add_cascade(label="Power save Mode", command=function1)
    filesubmenu.add_cascade(label="Exit", command=exitfunc)
 
    editsubmenu = Menu(mymenu)
 
    mymenu.add_cascade(label="Edit", menu=editsubmenu)
 
    editsubmenu.add_cascade(label="Undo", command=function3)
 
    toolbar = Frame(root, bg="light pink")
    insertbutton = Button(toolbar, text="Insert Files", command=function1)
    insertbutton.pack(side=LEFT, padx=2, pady=3)
 
    printbuttopn = Button(toolbar, text="Print", command=function1)
    printbuttopn.pack(side=LEFT, padx=2, pady=3)
 
    toolbar.pack(side=TOP, fill=X)
 
    status = Label(root, text="This is the status", bd=1, relief=SUNKEN, anchor=W)
    status.pack(side=BOTTOM, fill=X)
 
    root.mainloop()
 
 
b = menudiaplay()
Please help me.Thanks in advance.
Reply
#2
change:
1
filesubmenu.add_cascade(label="Exit", command=exitfunc)
to:
1
filesubmenu.add_cascade(label="Exit", command=self.exitfunc)
Reply
#3
Getting error as,

filesubmenu.add_cascade(label="Exit", command=self.exitfunc)
NameError: name 'self' is not defined
Reply
#4
there are many things wrong with this script.
You are not using class properly.

much of what is here is outside of the class.
Use:
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
from tkinter import *
import tkinter.messagebox
from tkinter.filedialog import askopenfilename
 
 
class menudiaplay:
    def __init__(self, parent):
        self.parent = parent
        self.exit = exit
        mymenu = Menu(self.parent)
        self.parent.config(menu=mymenu)
 
        filesubmenu = Menu(mymenu)
 
        mymenu.add_cascade(label="File", menu=filesubmenu)
 
        filesubmenu.add_cascade(label="New Project", command=self.function1)
        filesubmenu.add_cascade(label="New", command=self.function1)
        filesubmenu.add_cascade(label="open File", command=askopenfilename)
        filesubmenu.add_cascade(label="Power save Mode", command=self.function1)
        filesubmenu.add_cascade(label="Exit", command=self.exitfunc)
 
        editsubmenu = Menu(mymenu)
 
        mymenu.add_cascade(label="Edit", menu=editsubmenu)
 
        editsubmenu.add_cascade(label="Undo", command=self.function3)
 
        toolbar = Frame(self.parent, bg="light pink")
        insertbutton = Button(toolbar, text="Insert Files", command=self.function1)
        insertbutton.pack(side=LEFT, padx=2, pady=3)
 
        printbuttopn = Button(toolbar, text="Print", command=self.function1)
        printbuttopn.pack(side=LEFT, padx=2, pady=3)
 
        toolbar.pack(side=TOP, fill=X)
 
        status = Label(self.parent, text="This is the status", bd=1, relief=SUNKEN, anchor=W)
        status.pack(side=BOTTOM, fill=X)
 
    def function1(self):
        print("Menu is clicked")
 
    def openfile(self):
        name = askopenfilename()
        print(name)
 
    def function3(self):
        print("Undo is done")
 
    def exitfunc(self):
        self.exit = tkinter.messagebox.askquestion("Question", "Really want to exit")
        if self.exit == 'yes':
            self.parent.destroy()
        else:
            print("Hello welcome back")
 
def main():
    root = Tk()
    menudiaplay(root)
    root.mainloop()
 
if __name__ == '__main__':
    main()
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Question TypeError: argument of type 'NoneType' is not iterable Tajaldeen 7 2,482 Nov-29-2024, 09:45 AM
Last Post: Tajaldeen
  TypeError: Diagram.render() takes 1 positional argument but 2 were given sachin1361 0 1,241 Apr-23-2024, 06:39 AM
Last Post: sachin1361
  TypeError: a bytes-like object is required ZeroX 13 15,806 Jan-07-2023, 07:02 PM
Last Post: deanhystad
  Error TypeError: output_type_handler() takes 2 positional arguments but 6 were given paulo79 1 3,503 Oct-17-2022, 06:29 PM
Last Post: paulo79
  TypeError: a bytes-like object is required, not 'str' - Help Please. IanJ 3 8,148 Aug-29-2022, 05:53 PM
Last Post: deanhystad
  TypeError: float() argument must be a string or a number, not 'list' Anldra12 2 6,756 Jul-01-2022, 01:23 PM
Last Post: deanhystad
  Error: _vhstack_dispatcher() takes 1 positional argument but 9 were given alexfrol86 3 7,739 May-09-2022, 12:49 PM
Last Post: deanhystad
  What is positional argument self? Frankduc 22 10,180 Mar-06-2022, 01:18 AM
Last Post: Frankduc
  TypeError: missing a required argument: 'y' gible 0 3,844 Dec-15-2021, 02:21 AM
Last Post: gible
  positional argument: 'self' mcmxl22 8 4,999 Dec-13-2021, 10:11 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020