Я пытаюсь создать страницу входа и регистрации из базы данных kivy и sqlite3.значения регистрации регистрируются в базе данных и переходят на страницу пользователя, а при входе пользователя в систему он проверяет базы данных и принимает на страницу пользователя.
вход в систему работает нормально, но регистрация в sqlite приводит к ошибкам:
я создаю регистр.БД, которые имеют имя таблицы Register и поля «username text» и «password int».он регистрирует оба, пока я даю имя пользователя любой текст и пароль любой int.но когда я даю оба текста, он также регистрируется и переходит на страницу пользователя.
, затем я пытался открыть базу данных командой «выбрать * из логина», она показывает пустой ввод
я создаю новый проект длярегистрация здесь - main.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang.builder import Builder
import sqlite3
class SignupPage(Screen):
def register(self):
con = sqlite3.connect("Register.db")
cur = con.cursor()
if self.ids["signup"].text and self.ids["passw"].text is not None:
u = self.ids["signup"].text
p = self.ids["passw"].text
cur.execute("INSERT INTO Register VALUES(?, ?)",(u, p))
self.manager.current = "user"
con.commit()
class UserPage(Screen):
pass
class ScreenManagement(ScreenManager):
pass
kv_file = Builder.load_file('login.kv')
class LoginApp(App):
def builder(self):
return kv_file
if __name__ == '__main__':
LoginApp().run()
здесь - login.kv
ScreenManagement:
SignupPage:
UserPage:
<SignupPage>:
name: "signup_page"
BoxLayout:
TextInput:
id: signup
TextInput:
id: passw
password: True # hide password
Button:
text: "go"
on_release: root.register()
<UserPage>:
name: "user"
Button:
text: "back"
on_release: app.root.current = "signup_page"
сообщите мне о любых моих ошибках или предложите улучшить код.
ХорошоВот код для входа в систему main.py, который отлично работает, я создаю для него новую базу данных Login.py:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang.builder import Builder
import sqlite3
class LoginPage(Screen):
def verify(self):
con = sqlite3.connect("Login.db")
cur = con.cursor()
cur.execute("SELECT * FROM Login;")
user = self.ids["login"].text
pswd = self.ids["passw"].text
cur.execute('SELECT * from Login WHERE Username="%s" AND Password="%s"' % (user, pswd))
if cur.fetchall():
self.manager.current = "user"
class UserPage(Screen):
pass
class ScreenManagement(ScreenManager):
pass
kv_file = Builder.load_file('login.kv')
class LoginApp(App):
def builder(self):
return kv_file
if __name__ == '__main__':
LoginApp().run()
login.kv
ScreenManagement:
LoginPage:
UserPage:
<LoginPage>:
name: "login_page"
BoxLayout:
TextInput:
id: login
TextInput:
id: passw
password: True # hide password
Button:
text: "go"
on_release: root.verify()
<UserPage>:
name: "user"
Button:
text: "back"
on_release: app.root.current = "login_page"