Python Ошибка tkinter: «Переменная не определена», хотя она определена - PullRequest
0 голосов
/ 05 августа 2020

Когда я запускаю этот код, он говорит: «Имя пользователя не определено, даже если оно определено в функции прямо под ним». Должны ли функции быть в определенном порядке, и если да, то есть ли способ исправить это.

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 голосов
/ 05 августа 2020

Глядя на этот код, я бы предложил следующее. Создайте класс, обрабатывающий windows. В этом случае вы можете легко иметь функции, которые делают то, что вам нужно, в этом коде кажется, что вы используете функции, поскольку в конечном итоге все для вашего кода, это было бы неэффективно для вашего кода и не очень перспективным для будущего.

Без класса вы все равно можете достичь того, что хотите для поля ввода, проблема здесь с вашим примером заключается в том, что ваши переменные объявлены в частной области, что делает их недоступными для остальной части программы, это можно исправить с помощью объявление глобального в определенной области вашего кода, но это может стать беспорядочным и сделать функции почти бесполезными для частных функций (это может привести ко многим ошибкам) ​​

Вот мой простой пример для поля ввода с кнопкой, которая получает данные в нем

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...