目前尝试使用tkinter中的框架创建登录页面并获取错误'框架'对象没有属性' entry_U'并且不知道如何解决它。我见过一些类似的问题,但没有一个答案似乎适用于我的代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def Page1():
f1.pack()
f2.pack_forget()
f3.pack_forget()
def Page2():
f1.pack_forget()
f2.pack()
f3.pack_forget()
def Page3():
f1.pack_forget()
f2.pack_forget()
f3.pack()
root.title('Frames')
f1 = tk.Frame(root)
label_1 = tk.Label(f1, text='Login')
label_1.pack()
label_U = tk.Label(f1, text="Username")
label_U.pack()
entry_U = tk.Entry(f1)
entry_U.pack()
label_P = tk.Label(f1, text="Password")
label_P.pack()
entry_P = tk.Entry(f1, show="*")
entry_P.pack()
checkbox = tk.Checkbutton(f1, text="Keep me logged in")
checkbox.pack()
#error here
username = f1.entry_U.get()
password = f1.entry_P.get()
if username == "user1" and password == "password":
userid == True
else:
userid == False
if userid == True:
logbtn = tk.Button(f1, text="Login", command = Page2)
logbtn.pack()
else:
tk.messagebox.showerror("Login error", "Incorrect username or password")
but_quit = tk.Button(f1, text='Quit', command = quit)
but_quit.pack()
f2 = tk.Frame(root)
label_2 = tk.Label(f2, text='Page2')
label_2.pack()
but_3 = tk.Button(f2, text='Go to Page 3', command = Page3)
but_3.pack()
but_quit = tk.Button(f2, text='Quit', command = quit)
but_quit.pack()
f3 = tk.Frame(root)
label_3 = tk.Label(f3, text='Page3')
label_3.pack()
but_1 = tk.Button(f3, text='Go to Page 1', command = Page1)
but_1.pack()
but_quit = tk.Button(f3, text='Quit', command = quit)
but_quit.pack()
f1.pack()
root.mainloop()
我对编程很新,并且不知道我尝试做什么是可能的,但任何帮助都会受到赞赏。感谢。
答案 0 :(得分:1)
尽管entry_U
是主人为f1
(框架)的小工具,但名称为' entry_U'只是一个全球名称,与名称' f1'没有特别的关系。删除' f1。'前缀。
答案 1 :(得分:1)
因为entry_U使用f1作为主窗口小部件并不使其成为该窗口小部件的属性。只需使用您提供的变量名称:
username = entry_U.get()
您还需要将登录代码移动到Page2功能中。