当我运行此代码时,尽管它在其下面的函数中定义了,但是却说“甚至没有定义UserName”。功能是否必须按一定顺序排列,如果可以,则可以解决该问题。
from tkinter import *
def MasterLogin():
Name = UserName.get()
Email = RegisterEmail.get()
Password = RegisterPassword.get()
MasterLogin = Tk()
MasterLogin.title('Login')
MasterLogin.geometry('260x100')
LoginEmail = Entry(MasterLogin, width=30).grid(row=0, column=1)
LoginEmailText = Label(MasterLogin, text=Email).grid(row=0, column=0)
def MasterRegister():
MasterRegister = Tk()
MasterRegister.title('Register')
MasterRegister.geometry('260x100')
UserName = Entry(MasterRegister, width=30).grid(row=0, column=1)
UserNameText = Label(MasterRegister, text='Name ').grid(row=0, column=0)
RegisterEmail = Entry(MasterRegister, width=30).grid(row=1, column=1)
RegisterEmailText = Label(MasterRegister, text='Email ').grid(row=1, column=0)
RegisterPassword = Entry(MasterRegister, width=30).grid(row=2, column=1)
RegisterPasswordText = Label(MasterRegister, text='Password ').grid(row=2, column=0)
RegisterCont = Button(MasterRegister, text='Continue', width=25, bg='blue', fg='white',
command=MasterLogin).grid(row=3, column=1)
答案 0 :(得分:0)
查看此代码时,我建议以下内容。创建一个处理窗口的类。在这种情况下,您可以轻松地实现需要执行的功能,在此代码中,您似乎最终将所有功能都用在了代码上,这对您的代码来说效率很低,而且不是很可靠。 >
没有类,您仍然可以实现输入框所需的功能,示例的问题在于,变量是沿私有作用域声明的,因此程序其余部分无法访问它们,可以通过声明来解决在代码的特定区域内是全局的,但这会变得混乱并且使函数几乎对私有功能毫无用处(这可能导致许多错误)
这里是一个简单的示例,其中带有一个用于在其中获取数据的按钮的输入框
from tkinter import *
def ButtonPress(entry):
entry = entry
print(entry.get())
return entry.get()
F = Tk()
F.geometry("300x100")
F.config(bg="black")
myEntry = Entry()
myEntry.pack()
myButton = Button(text="Enter",command=lambda : ButtonPress(myEntry))
myButton.pack()
F.mainloop()