Кнопка tkinter не распознает функцию? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь получить кнопку tkinter, чтобы получить ввод из записи и поместить его в переменную. функция, чтобы получить ввод, поместить его в переменную и напечатать его, не распознается кнопкой.

Я делаю простую викторину с графическим интерфейсом на Python и tkinter. Я хочу сравнить пользовательский ввод с установленной переменной, чтобы увидеть, совпадают ли они. Я попытался поместить функцию вне класса, но все еще та же проблема. это мой первый раз с tkinter, и большая часть моего кода взята. https://pythonprogramming.net/change-show-new-frame-tkinter/ Я не просто скопировал и вставил его код, я смотрел его видео, чтобы попытаться понять его.

class quizgame(tkinter.Tk):

  def __init__(self, *args, **kwargs):

    tkinter.Tk.__init__(self, *args, **kwargs)
    container = tkinter.Frame(self)

    container.pack(side = 'top', fill = 'both', expand = True)

    container.grid_rowconfigure(0, weight = 1)
    container.grid_columnconfigure(0, weight = 1)

    self.frames = {}

    for F in (StartPage, PageOne, PageTwo, PageThree,
              PageFour, PageFive, PageSix, PageSeven, 
              PageEight, PageNine, PageTen, LastPage):

      frame = F(container, self)

      self.frames[F] = frame

      frame.grid(row = 0, column = 0, sticky = 'nsew')

    self.show_frame(StartPage)

  def show_frame(self, cont):

    frame = self.frames[cont]
    frame.tkraise()


class StartPage(tkinter.Frame):

  def __init__(self, parent, controller):
    tkinter.Frame.__init__(self, parent)
    label = tkinter.Label(self, text = 'start page')
    label.pack(pady = 10, padx = 10)

    button = tkinter.Button(self, text = 'start game',
                command = lambda: controller.show_frame(PageOne))
    button.pack()

class PageOne(tkinter.Frame):

  def __init__(self, parent, controller):
    tkinter.Frame.__init__(self, parent)
    label = tkinter.Label(self, text = question1)
    label.pack(pady = 10, padx = 10)

    page1_entry = tkinter.Entry(self)
    page1_entry.pack()

    button1 = tkinter.Button(self, text = 'next question',
                 command = lambda: controller.show_frame(PageTwo))
    button1.pack()

    inputbtn = tkinter.Button(self, text = 'input', command = getInput())
    inputbtn.pack()

  def getInput():
    user_input = page1_entry.get()
    print(user_input)

app =  quizgame()
app.mainloop

Я ожидаю, что вывод getInput() напечатает все, что пользователь пишет в виджете ввода. Выход

NameError: name 'getInput' is not defined
...