使用tkinter找不到功能

时间:2019-12-29 04:46:48

标签: python tkinter

我是tkinter的新手,我不确定100%整个 frame self 的工作方式。

我有这个:

class ScalesPage(Frame):
        def GetNotes():
                key = KeyEntry.get()
                intervals = ScaleEntry.get()
                WholeNotes = ['C','C#','D','D#','E','F','F#','G','G#','A','A#','B']*4
                Root = WholeNotes.index(key)
                Chromatic = WholeNotes[Root:Root+12]
                print([Chromatic[i] for i in scales[intervals]])

        def __init__(self, parent, controller):
                Frame.__init__(self, parent)
                global KeyEntry
                KeyEntry = Entry(self)
                KeyEntry.pack()
                global ScaleEntry
                ScaleEntry = Entry(self)
                ScaleEntry.pack()
                ScaleButtonEnter = Button(self, text="Enter", command=GetNotes)
                ScaleButtonEnter.pack()

我正在尝试使ScaleButtonEnter执行GetNotes(),但是我一直收到错误消息

  

NameError:名称'GetNotes'未定义

我假设我错过了一些简单的事情,但是我对tkinter不够了解,无法弄清楚。

2 个答案:

答案 0 :(得分:0)

您应该使用:

command=self.GetNotes

使用command=self.GetNotes()只会在此处调用该函数,而您仅在按下按钮时才需要调用它。

不需要使用括号(),如果您想在没有任何理由的情况下使用括号,则必须使用lambda

赞:

command=lambda: self.GetNotes()

答案 1 :(得分:-1)

使用self.GetNotes()代替GetNotes()