2016-08-10 126 views
-1

我想在python中創建一個基本的密碼存儲程序,並且我不確定如何在單擊登錄按鈕時調用「framechange」函數並獲取錯誤「NameError:name 「framechange」沒有定義」NameError:名稱'framechange'未定義

class StartPage(tk.Frame): entry = "password" def framechange(get): if entry.get() == "password": controller.show_frame("PageOne") def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller label = tk.Label(self, text="Welcome", font=TITLE_FONT) label.pack(side="top", fill="x", pady=10) self.entry = tk.Entry(self) self.entry.pack(side="top", fill="x", pady=10, padx=10) button1 = tk.Button(self, text="Login",command = lambda: framechange) button1.pack()

非常感謝

回答

1

framechange不是類的不(self)作爲第一個參數的方法。

def framechange(self, get) 

另外,你確定你需要lambda?你應該能夠自己通過framechange函數,lambda是用來定義一個fcn的。

+0

我修改後的代碼 '進入= 「密碼」 高清framechange(自我,獲得): 如果self.entry.get()== 「密碼」: controller.show_frame( 「PAGEONE」)' 'button1 = tk.Button(self,text =「Login」,command = self.framechange)' 我現在得到錯誤消息TypeError:framechange()缺少1所需的位置參數:'get' – BadUserName

+0

那麼,如果framechange需要一個論點(我認爲它不應該,因爲你從來沒有使用它),那麼你必須調用該函數並傳遞一個參數。從你的片段中,「get」不會用在framechange中。你使用entry.get,但這是不同的。嘗試刪除get作爲參數,但保持自我。 IE def framechange(self) –

+0

你還需要參考條目self.entry或它會抱怨 –