Операторы if, else выдают совсем не то

Phonik

Новичок
Пользователь
Июн 16, 2022
5
0
1
Делал страницу входа в приложение на kivy, начал делать проверку логина и пароля используя оператор if, else, в итоге даже если написать пароль с логином правильно выдаст вариант, который выводится при условии что логин неверный.
Вот код:

Python:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout


from kivy.config import Config
from kivy.core.window import Window


Window.size = (500, 400)
Window.clearcolor = (43 / 255, 43 / 255, 43 / 255)
Window.title = "Конвентер"

Config.set('graphics', 'resizeable', '0')


class MyApp(App):
    def __init__(self):
        super().__init__()
        self.Header = Label(text="Авторизация",
                            font_size='43sp')
        self.Login_Input = TextInput(hint_text="Логин",
                                     size_hint=(1, .6))
        self.Password_Input = TextInput(hint_text="Пароль",
                                        size_hint=(1, .6))
        self.Enter_to_account = Button(text="Войти",
                                       size_hint=(1, .6),
                                       on_key_up=self.Logining)
        self.Enter_to_account.bind(on_press=self.Logining)

    def Logining(self, press):
        if self.Login_Input == "admin":
            if self.Password_Input == "admin":
                if Verification_Login and Verification_Password:
                    print("УРА")
                else:
                    print("c")
            else:
                print("a")
        else:
            print("b")



    def build(self):
        al = AnchorLayout(anchor_x='center', anchor_y='center')
        bl = BoxLayout(orientation="vertical",
                       spacing=1,
                       size_hint=(.6, .5))

        bl.add_widget(self.Header)
        bl.add_widget(self.Login_Input)
        bl.add_widget(self.Password_Input)
        bl.add_widget(self.Enter_to_account)
        al.add_widget(bl)

        return al


if __name__ == "__main__":
    MyApp().run()
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
потому что вы сравниваете объекты полей ввода, а не текст из них
для сравнения вводимого текста нужно так
Python:
    def Logining(self, press):
        if self.Login_Input.text == "admin":
            if self.Password_Input.text == "admin":
                if Verification_Login and Verification_Password:
                    print("УРА")
                else:
                    print("c")
            else:
                print("a")
        else:
            print("b")
и все ифы можно объединить в один через and
 
  • Мне нравится
Реакции: Phonik

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
у вас в коде нет объявления Verification_Login и Verification_Password, где вы их взяли я не знаю...
 
  • Мне нравится
Реакции: Phonik

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
Исправил, теперь выводит c
я не знаю что делают ваши Verification_Login и Verification_Password, без них все работает
 
  • Мне нравится
Реакции: Phonik

Форум IT Специалистов