0

I'm trying to get the optionmenu to work on my current project file but i keep getting the error TypeError: init() takes from 2 to 3 positional arguments but 9 were given so i wanted to see if it was the code, and i made a new project file and pasted it in there with a previous revision of the project that i currently have and it worked perfectly fine. Any ideas as to why i get the error on my current project file? heres the code

    def Pantsize():
       # Drop box for pant size
       # Figure out how to label for pant sizes
       PantsClick = StringVar()
       PantsClick.set("Select pant size")
       PantsDrop = OptionMenu(AppWindow, PantsClick, "Select pant size", "XS", "S", "M", "L", "XL")
       PantsDrop.place(relx=0.3, rely=0.25)

1 Answers1

0

Based on what I've read from this site.

tkinter.OptionMenu takes 2 or 3 parameters.

tk.OptionMenu(parent_frame, variable, choice1, choice2, ...)

Therefore, your third parameter "Select pant size" is now unnecessary since that is already your second parameter PantsClick because on line 5 PantsClick.set("Select pant size").

PantsDrop = OptionMenu(AppWindow, PantsClick, "XS", "S", "M", "L", "XL")

If the answer above still doesn't work. Try to add a new variable size_options then place all of the choices inside a tuple. Then use * on that tuple when passing it as an argument.

def Pantsize():
   # Drop box for pant size
   # Figure out how to label for pant sizes
   PantsClick = StringVar()
   PantsClick.set("Select pant size")
   size_options = ( "XS", "S", "M", "L", "XL" )
   PantsDrop = OptionMenu(AppWindow, PantsClick, *size_options)
   PantsDrop.place(relx=0.3, rely=0.25)
Eve
  • 104
  • 3
  • 1
    Awesome it worked! i'll use your advice for on the PantsClick.set and make the list outside to clean this code up. You still have to add tk. in front of the optionmenu but it works too! Thanks! – Daniel Lizarraga Apr 21 '21 at 04:12