Python tkinter错误:“变量未定义”,即使已定义

时间:2020-08-05 18:03:37

标签: python

当我运行此代码时,尽管它在其下面的函数中定义了,但是却说“甚至没有定义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)

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()