我是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不够了解,无法弄清楚。
答案 0 :(得分:0)
您应该使用:
command=self.GetNotes
使用command=self.GetNotes()
只会在此处调用该函数,而您仅在按下按钮时才需要调用它。
不需要使用括号()
,如果您想在没有任何理由的情况下使用括号,则必须使用lambda
。
赞:
command=lambda: self.GetNotes()
答案 1 :(得分:-1)
使用self.GetNotes()
代替GetNotes()
。