@DILDIS

Как значение переменной перенести из одной функции в другую?

from tkinter import *



screen = Tk()

screen.resizable( width = False, height = False )
screen.geometry( '410x230' )
screen.title( 'Регистрация' )
screen.iconbitmap("D:/Python/регистр/web/favicon.ico")


def Ввод ( event ):
    TWpassword_chek()
    login_check()
    password_check()
    print("логин + пароль  " + str( login_p) + str( password_p))
    if login_p == True:
        print("логин есть")
        if password_p == True:
            print("пароль")
            if TWp == True:
                vse = Label( text = ' Вы зарегистрированы ', font = 'Consolas' ) 
                vse.grid( row = 16, column = 0, padx = 1, pady = 1 )
                print("зарегистрированы")


#проверка имени 
def login_check ():
    N = name_entry.get()
    if len(str(N)) > 20:
        l20 = Label( text = ' это имя слишком длинное ', font = 'Consolas' )
        l20.grid( row = 13, column = 0, padx = 1, pady = 1 )
        print("l1")# Эта строка что бы я видел сработала ли функция
        login_p = False
    elif len(str(N)) < 3:
        l3 = Label( text = ' это имя слишком короткое ', font = 'Consolas' )
        l3.grid( row = 13, column = 0, padx = 1, pady = 1 )
        print("l2")# Эта строка что бы я видел сработала ли функция
        login_p = False
    else: 
        l0 = Label( text = '                             ', font = 'Consolas' )
        l0.grid( row = 13, column = 0, padx = 1, pady = 1 )
        print("l3")# Эта строка что бы я видел сработала ли функция 
        login_p = True


#password
def password_check ():
    P = password_entry.get()
    if len(str(P)) < 5:
        p1 = Label ( text = " Слишком короткий пароль ", font = 'Consolas' ) 
        p1.grid( row = 14, column = 0, padx = 1, pady = 1 )  
        print("1")# Эта строка что бы я видел сработала ли функция
        password_p = False   
    elif str(P) == "abcde":
        p2 = Label ( text = " Слишком простой пароль ", font = 'Consolas' )
        p2.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("2")# Эта строка что бы я видел сработала ли функция
        password_p = False
    elif str(P) == "ABCDE":
        p3 = generateLabel ( text = " Слишком простой пароль ", font = 'Consolas' )
        p3.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("3")# Эта строка что бы я видел сработала ли функция
        password_p = False
    elif str(P) == "12345":
        p4 = Label ( text = " Слишком простой пароль ", font = 'Consolas' )
        p4.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("4")# Эта строка что бы я видел сработала ли функция
        password_p = False
    elif str(P) == "123456789":
        p5 = Label ( text = " Слишком простой пароль ", font = 'Consolas' )
        p5.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("5")# Эта строка что бы я видел сработала ли функция
        password_p = False
    elif str(P) == "987654321":
        p6 = Label ( text = " Слишком простой пароль ", font = 'Consolas' )
        p6.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("6")# Эта строка что бы я видел сработала ли функция
        password_p = False
    elif str(P) == "абвгд":
        p7 = Label ( text = " Слишком простой пароль ", font = 'Consolas' )
        p7.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("7")# Эта строка что бы я видел сработала ли функция
        password_p = False
    elif str(P) == "АБВГД":
        p8 = Label ( text = " Слишком простой пароль ", font = 'Consolas' )
        p8.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("8")# Эта строка что бы я видел сработала ли функция
        password_p = False
    else:
        p0 = Label( text = '                             ', font = 'Consolas' )
        p0.grid( row = 14, column = 0, padx = 1, pady = 1 )
        print("9")# Эта строка что бы я видел сработала ли функция
        password_p = True
def TWpassword_chek ():
    P = password_entry.get()
    TWP = TWpassword_entry.get()
    if TWP == P:
        print("пароли совпали " + TWP)
        TWp = True
        TW0 = Label( text = '                             ', font = 'Consolas' )
        TW0.grid( row = 15, column = 0, padx = 1, pady = 1 )

    else:
        print("пароли не совпали")
        TWp = False 
        TWp_e = Label( text = ' Пароли не совподают ', font = 'Consolas' )
        TWp_e.grid( row = 15, column = 0, padx = 1, pady = 1 )


#КНОПКА
enter = Button( text = 'Ввод', font = 'Consolas', width = 18 )
#Ввод
name_entry = Entry( screen, font = 'Consolas' )
password_entry = Entry( screen, font = 'Consolas', show = '*' )
TWpassword_entry = Entry( screen, font = 'Consolas', show = '*' )
#Надписи
Tname = Label( text = 'Введите имя пользователя:', font = 'Consolas' )
Tpassword = Label( text = 'Придумайте пароль: ', font = 'Consolas' )
TWpassword = Label( text = 'Повторите пароль: ', font = 'Consolas' )

#  расположение
Tname.grid( row = 3, column = 0, sticky = W, padx = 1, pady = 1 )
name_entry.grid( row = 3, column = 1, padx = 1, pady = 1 )
Tpassword.grid( row = 4, column = 0, sticky = W, padx = 1, pady = 1 )
password_entry.grid( row = 4, column = 1, padx = 1, pady = 1 )
TWpassword.grid( row = 5, column = 0, sticky = W, padx = 1, pady = 1 )
TWpassword_entry.grid( row = 5, column = 1, padx = 1, pady = 1 )
enter.grid( row = 10, column = 0, padx = 1, pady = 1 )
enter.bind( '<Button-1>', Ввод )

screen.mainloop()

Как из функций login_check, password_check, TWpassword_chek перенести значения переменных login_p, password_p, TWp в функцию Ввод
  • Вопрос задан
  • 1376 просмотров
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
Какие глобал? Хватит чушь нести.

Есть оператор return, который возвращает значение из функци.
https://pythonworld.ru/tipy-dannyx-v-python/vse-o-...
https://younglinux.info/python/return

Добавляете return и нужное значение в то место, где его нужно вернуть. Тут, допустим, в конце функции
def login_check ():
    N = name_entry.get()
    if len(str(N)) > 20:
        l20 = Label( text = ' это имя слишком длинное ', font = 'Consolas' )
        l20.grid( row = 13, column = 0, padx = 1, pady = 1 )
        print("l1")# Эта строка что бы я видел сработала ли функция
        login_p = False
    elif len(str(N)) < 3:
        l3 = Label( text = ' это имя слишком короткое ', font = 'Consolas' )
        l3.grid( row = 13, column = 0, padx = 1, pady = 1 )
        print("l2")# Эта строка что бы я видел сработала ли функция
        login_p = False
    else: 
        l0 = Label( text = '                             ', font = 'Consolas' )
        l0.grid( row = 13, column = 0, padx = 1, pady = 1 )
        print("l3")# Эта строка что бы я видел сработала ли функция 
        login_p = True

    return login_p

Потом так же добавляете return во все нужные вам функции.

Дальше просто все значения присваиваете в переменные в функции Ввод

def Ввод ( event ):
    TWp = TWpassword_chek()
    login_p = login_check()
    password_p = password_check()
Ответ написан
Комментировать
shabelski89
@shabelski89
engineer
в функции проверки добавить return, в фунцкию ввода присвоение a = func().
и ужас сколько дублирования кода! вперед за учебники!
from tkinter import *

screen = Tk()

screen.resizable(width=False, height=False)
screen.geometry('410x230')
screen.title('Регистрация')
# screen.iconbitmap("D:/Python/регистр/web/favicon.ico")


def Enter(event):
    TWp = TWpassword_chek()
    login_p = login_check()
    password_p = password_check()
    print("логин + пароль  " + str(login_p) + str(password_p))
    if login_p == True:
        print("логин есть")
        if password_p == True:
            print("пароль")
            if TWp == True:
                vse = Label(text=' Вы зарегистрированы ', font='Consolas')
                vse.grid(row=16, column=0, padx=1, pady=1)
                print("зарегистрированы")


# проверка имени
def login_check():
    N = name_entry.get()
    if len(str(N)) > 20:
        l20 = Label(text=' это имя слишком длинное ', font='Consolas')
        l20.grid(row=13, column=0, padx=1, pady=1)
        print("l1")  # Эта строка что бы я видел сработала ли функция
        login_p = False
    elif len(str(N)) < 3:
        l3 = Label(text=' это имя слишком короткое ', font='Consolas')
        l3.grid(row=13, column=0, padx=1, pady=1)
        print("l2")  # Эта строка что бы я видел сработала ли функция
        login_p = False
    else:
        l0 = Label(text='                             ', font='Consolas')
        l0.grid(row=13, column=0, padx=1, pady=1)
        print("l3")  # Эта строка что бы я видел сработала ли функция
        login_p = True
    return login_p


# password
def password_check():
    P = password_entry.get()
    if len(str(P)) < 5 or str(P) in ("abcde", "ABCDE", "12345", "123456789", "987654321", "абвгд", "АБВГД"):
        p1 = Label(text=" Слишком короткий пароль ", font='Consolas')
        p1.grid(row=14, column=0, padx=1, pady=1)
        print("1")  # Эта строка что бы я видел сработала ли функция
        password_p = False
    else:
        p0 = Label(text='' * 30, font='Consolas')
        p0.grid(row=14, column=0, padx=1, pady=1)
        print("3")  # Эта строка что бы я видел сработала ли функция
        password_p = True
    return password_p


def TWpassword_chek():
    P = password_entry.get()
    TWP = TWpassword_entry.get()
    if TWP == P:
        print("пароли совпали " + TWP)
        TWp = True
        TW0 = Label(text='                             ', font='Consolas')
        TW0.grid(row=15, column=0, padx=1, pady=1)

    else:
        print("пароли не совпали")
        TWp = False
        TWp_e = Label(text=' Пароли не совподают ', font='Consolas')
        TWp_e.grid(row=15, column=0, padx=1, pady=1)
    return TWP


# КНОПКА
enter = Button(text='Ввод', font='Consolas', width=18)
# Ввод
name_entry = Entry(screen, font='Consolas')
password_entry = Entry(screen, font='Consolas', show='*')
TWpassword_entry = Entry(screen, font='Consolas', show='*')
# Надписи
Tname = Label(text='Введите имя пользователя:', font='Consolas')
Tpassword = Label(text='Придумайте пароль: ', font='Consolas')
TWpassword = Label(text='Повторите пароль: ', font='Consolas')

#  расположение
Tname.grid(row=3, column=0, sticky=W, padx=1, pady=1)
name_entry.grid(row=3, column=1, padx=1, pady=1)
Tpassword.grid(row=4, column=0, sticky=W, padx=1, pady=1)
password_entry.grid(row=4, column=1, padx=1, pady=1)
TWpassword.grid(row=5, column=0, sticky=W, padx=1, pady=1)
TWpassword_entry.grid(row=5, column=1, padx=1, pady=1)
enter.grid(row=10, column=0, padx=1, pady=1)
enter.bind('<Button-1>', Enter)

screen.mainloop()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@maximsemin23
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы