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

    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()
    Ответ написан
    Комментировать
  • Не открывается окно Tkinter python?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Код не доходит до screen.mainloop(), потому что вы вызвали зачем-то бесконечный цикл
    reger = True
    while reger:

    Убирайте его.

    Должно выглядеть как-то так:
    from tkinter import *
    
    
    
    screen = Tk()
    
    screen.resizable( width = False, height = False )
    screen.geometry( '410x230' )
    screen.title( 'Регистрация' )
    
    
    
    def Ввод ( event ):
    
        login_p = name_entry.get()
        password_p = password_entry.get()
    
        login_check()
        password_check()
        print("логин + пароль" + str(login_p ) + str(password_p))
        if login_p == password_p:
            vse = Label( text = 'Вы зарегистрированы ', font = 'Consolas' ) 
            vse.grid( row = 0, column = 1, padx = 1, pady = 1 )
    
    
    #проверка имени 
    def login_check ():
        N = name_entry.get()
        if len(str(N)) > 20:
            l20 = Label( text = 'это имя слишком длинное', font = 'Consolas' )
            l20.grid( row = 9, column = 0, padx = 1, pady = 1 )
            print("l1")# Эта строка что бы я видел сработала ли функция
            login_p = 9
        elif len(str(N)) < 3:
            l3 = Label( text = 'это имя слишком короткое', font = 'Consolas' )
            l3.grid( row = 10, column = 0, padx = 1, pady = 1 )
            print("l2")# Эта строка что бы я видел сработала ли функция
            login_p = 10
        else: 
            print("l3")# Эта строка что бы я видел сработала ли функция 
            login_p = 1
    
    
    #password
    def password_check ():
        P = password_entry.get()
        if len(str(P)) < 5:
            p1 = Label ( text = "Слишком короткий пароль", font = 'Consolas' ) 
            p1.grid( row = 11, column = 0, padx = 1, pady = 1 )  
            print("1")# Эта строка что бы я видел сработала ли функция
            password_p = 2   
        elif str(P) == "abcde":
            p2 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p2.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("2")# Эта строка что бы я видел сработала ли функция
            password_p = 3
        elif str(P) == "ABCDE":
            p3 = generateLabel ( text = "Слишком простой пароль", font = 'Consolas' )
            p3.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("3")# Эта строка что бы я видел сработала ли функция
            password_p = 4
        elif str(P) == "12345":
            p4 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p4.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("4")# Эта строка что бы я видел сработала ли функция
            password_p = 5
        elif str(P) == "123456789":
            p5 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p5.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("5")# Эта строка что бы я видел сработала ли функция
        elif str(P) == "987654321":
            p6 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p6.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("6")# Эта строка что бы я видел сработала ли функция
            password_p = 6
        elif str(P) == "абвгд":
            p7 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p7.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("7")# Эта строка что бы я видел сработала ли функция
            password_p = 7
        elif str(P) == "АБВГД":
            p8 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p8.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("8")# Эта строка что бы я видел сработала ли функция
            password_p = 8
        else:
            print("9")# Эта строка что бы я видел сработала ли функция
            password_p = 1
    
    #КНОПКА
    enter = Button( text = 'Ввод', font = 'Consolas', width = 18 )
    
    name_entry = Entry( screen, font = 'Consolas' )
    password_entry = Entry( screen, font = 'Consolas', show = '*' )
    
    #Надписи
    Tname = Label( text = 'Введите имя пользователя:', font = 'Consolas' )
    Tpassword = Label( text = 'Придумайте пароль: ', font = 'Consolas' )
    
    #  расположение
    Tname.grid( row = 0, column = 0, sticky = W, padx = 1, pady = 1 )
    name_entry.grid( row = 0, column = 1, padx = 1, pady = 1 )
    Tpassword.grid( row = 1, column = 0, sticky = W, padx = 1, pady = 1 )
    password_entry.grid( row = 1, column = 1, padx = 1, pady = 1 )
    enter.grid( row = 7, column = 0, padx = 1, pady = 1 )
    enter.bind( '<Button-1>', Ввод )
    
    screen.mainloop()

    Конечно, есть много проблемных мест, но это уже самому исправлять
    Ответ написан
    1 комментарий