Flet, python: не изменяется текст кнопки формы

Пишу в vsc по гайду по ролику из ютуба. Дошло дело до окна регистрации: делал все как и на ютубе, но, почему-то, когда ввожу данные логина и пароля, кнопка "Добавить" не измненяeтся на "Добавлено"

код:

import flet as ft
import sqlite3

def main(page: ft.Page):
    page.title = "Регистрация"
    page.theme_mode = "dark"
    page.vertical_alignment = ft.MainAxisAlignment.CENTER
    page.window_width = 350
    page.window_height = 400
    page.window_resizeble = False
    
    
    def register(e):
        db = sqlite3.connect('it.proger')
        
        cur = db.cursor()
        cur.execute(""""CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY,
            login TEXT,
            pass TEXT
        )""")
        cur.execute(f"INSERT INTO users VALUES(NULL,'{user_login.value}', '{user_pass.value}')")
        
        db.commit()
        db.close()
        
        user_login.value = ''
        user_pass.value = ''
        btn_reg.text = 'Добавлено'
        page.update()
        
    
    def validate(e):
        if all([user_login.value, user_pass.value]):
            btn_reg.disabled = False
            btn_auth.disabled = False
        else:
            btn_reg.disabled = True
            btn_auth.disabled = True 
            
        page.update()
    
    
    def auth_user(e):
        db = sqlite3.connect('it.proger')
        
        cur = db.cursor()
        cur.execute(f"SELECT * FROM users WHERE login = '{user_login.value}' AND pass = '{user_pass.value}'")
        print(cur.fetchone())

        db.commit()
        db.close()
        
        user_login.value = ''
        user_pass.value = ''
        btn_auth.text = "Авторизовано"
        page.update()
    
    user_login = ft.TextField(label="Login", width=200, on_change=validate)
    user_pass = ft.TextField(label="Password", password=True, width=200, on_change=validate)
    btn_reg = ft.OutlinedButton(text="Добавить", width=200, on_click=register, disabled=True)
    btn_auth = ft.OutlinedButton(text="Авторизовать", width=200, on_click=auth_user, disabled=True)
    
    panel_register = ft.Row(
        [
            ft.Column(
                [
                    ft.Text("Регистрация"),
                    user_login,
                    user_pass,
                    btn_reg
                ]
            )
        ],
            alignment=ft.MainAxisAlignment.CENTER
    )  
    
    panel_auth = ft.Row(
        [
            ft.Column(
                [
                    ft.Text("Авторизация"),
                    user_login,
                    user_pass,
                    btn_auth
                ]
            )
        ],
            alignment=ft.MainAxisAlignment.CENTER
    )  
       
    page.add(panel_auth)
   
    
ft.app(target=main)

Ответы (1 шт):

Автор решения: Evgenii Evstafev
  1. В данном коде panel_register не добавляется на страницу через page.add (иными словами panel_register - определена, но не используется совсем), поэтому при запуске вы видите страницу Авторизация, а не регистрации.

  2. Если вы замените page.add(panel_auth) на page.add(panel_register) будет ошибка в выполнении запроса на создание таблицы пользователей (во всяком случае - у меня была такая ошибка), исправляется путем изменения:

        cur.execute(""""CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY,
            login TEXT,
            pass TEXT
        )""")

на

        cur.execute(
            """
            CREATE TABLE IF NOT EXISTS users (
                id INTEGER PRIMARY KEY,
                login TEXT,
                pass TEXT
            )
            """
        )
→ Ссылка