【问题标题】:Tkinter: TypeError: Submit() takes exactly 1 positional argument (0 given)Tkinter:TypeError:Submit() 正好采用 1 个位置参数(给定 0)
【发布时间】:2015-11-25 17:31:55
【问题描述】:

我正在尝试制作一个 tkinter 程序,一旦将答案输入输入框,就会按下提交,然后激活提交代码。提交代码应该会收到条目小部件中的信息,然后检查用户是否实际提交了答案。

如果这是真的,那么如果用户输入的答案与我之前规定的答案相同,则会提示 INCORRECT 或 CORRECT。

我查看了其他解决方案,但它们似乎不适用于这种情况

    entryWidget = Entry(root)
    entryWidget["width"] = 50
    entryWidget.pack()
    entryWidget.pack()
    submitButton = Button(root, text= "Submit Answer", command =Submit)
    submitButton.pack()



def Submit(entryWidget):
     """ Display the Entry text value. """

     userAnswer= entryWidget.get()

     if userAnswer.strip() == "":
         tkinter.messagebox.showerror("Tkinter Entry Widget", "Please enter a number.")

     if int(correctAnswer) != userAnswer.strip():
         tkinter.messagebox.showinfo("Answer", "INCORRECT!")
     else:
         tkinter.messagebox.showinfo("Answer", "CORRECT!")

【问题讨论】:

  • 您没有在回调中将 entryWidget 传递给 Submit。

标签: python tkinter messagebox strip function


【解决方案1】:

提交代码应该会收到入口小部件中的信息...

不,提交函数没有理由接收条目小部件作为其第一个参数。绑定到command 的函数将不会接收任何参数。如果您希望使用参数调用 Submit,您需要自己执行此操作,并将其包裹在匿名 lambda 函数中:

submitButton = Button(root, text= "Submit Answer", command =lambda: Submit(entryWidget))

【讨论】:

    猜你喜欢
    • 2015-06-06
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多