首页 > 解决方案 > “TypeError: __init__() 需要 2 到 3 个位置参数,但给出了 9 个”但我在一个新的项目文件中进行了测试并且工作正常

问题描述

我试图让选项菜单在我当前的项目文件上工作,但我不断收到错误 TypeError: init () takes from 2 to 3 positional arguments 但给出了 9 个所以我想看看它是否是代码,我制作了一个新的项目文件并将其与我目前拥有的项目的先前版本一起粘贴到那里,它工作得非常好。关于为什么我在当前项目文件中出现错误的任何想法?这是代码

    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)

标签: pycharmtypeerroroptionmenutkinter.optionmenu

解决方案


根据我从这个网站上读到的内容。

tkinter.OptionMenu 采用 2 或 3 个参数。

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

因此,您的第三个参数"Select pant size"现在是不必要的,因为这已经是您的第二个参数PantsClick,因为在第 5 行PantsClick.set("Select pant size")

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

如果上面的答案仍然不起作用。尝试添加一个新变量size_options,然后将所有选项放在一个元组中。然后*在将它作为参数传递时使用该元组。

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)

推荐阅读