2015-11-25 2 views
0

Я пытаюсь сделать программу tkinter, которая после ввода ответа в поле ввода будет нажата, а затем активирует код отправки. Код отправки должен получить информацию в виджету ввода, а затем проверить, действительно ли пользователь отправил ответ.Tkinter: TypeError: Submit() принимает ровно 1 позиционный аргумент (0 задано)

Если это так, то 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!") 
+0

Вы не проходя entryWidget, чтобы представить в функции обратного вызова. – stark

ответ

1

The submit code should receive the information in the entry widget...

Нет, нет никаких оснований для представить функцию, чтобы получить въездную виджет в качестве первого аргумента. Функции, связанные с command, не получат никаких аргументов. Если вы хотите Submit быть вызвана с аргументом, что вам нужно сделать это самостоятельно, завернутый в анонимной лямбда-функции:

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