更新嘗試學習Python,NameError:全局名稱 '控制器' 沒有定義
Exception in Tkinter callback Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in call return self.func(*args) File "tk_cp_successful.py", line 143, in command=lambda: controller.show_frame(StartPage))
我的錯誤是
NameError: global name 'controller' is not defined
class LoginPage(tk.Frame):
def __init__(self, parent, controller):
global entry_1
global entry_2
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="test page")
label.pack(pady=20,padx=20)
label_1 = Label(self, text="Username")
label_1.pack()
label_2 = Label(self, text="Password")
label_2.pack()
entry_1 = Entry(self)
entry_1.pack()
entry_2 = Entry(self, show="*")
entry_2.pack()
label_1.grid(row=0, sticky=E)
label_1.pack()
label_2.grid(row=1, sticky=E)
label_2.pack()
entry_1.grid(row=0, column=1)
entry_1.pack()
entry_2.grid(row=1, column=1)
entry_2.pack()
checkbox = Checkbutton(self, text="Keep me logged in")
checkbox.grid(columnspan=2)
checkbox.pack()
logbtn = Button(self, text="Login", command = self.tested)
logbtn.grid(columnspan=2)
logbtn.pack()
def tested(self):
#print("Clicked")
username = entry_1.get()
password = entry_2.get()
#print(username, password)
if username == "test" and password == "test":
#box.showinfo("Login successful", "Welcome test")
button1 = ttk.Button(self, text="Back to new page", command=lambda: controller.show_frame(newPage))
button1.pack()
else:
box.showerror("Login failed", "Incorrect username")
'controller'不在「範圍內」。您將它作爲參數傳遞給類,但您需要將其分配給一個字段以在另一個方法中使用它 –
這是類------------ class LoginPage(tk.Frame) : DEF __init __(個體,父母,控制器): 全球entry_1 全球ENTRY_2 tk.Frame .__初始化__(個體,父母) 標記= tk.Label(個體,文本= 「第一頁」) label.pack( pady = 10,padx = 10) label_1 =標籤(個體,文本= 「用戶名」) label_1.pack() label_2 =標籤(個體,文本= 「密碼」) label_2.pack() entry_1 =條目(個體) entry_1.pack() – jack
請不要'不要使用註釋代碼。正如你所看到的,它看起來很糟糕 –