日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

asp实现注册登录界面_python app (kivy)-与小型数据库连接,实现注册登录操作

發(fā)布時間:2024/9/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp实现注册登录界面_python app (kivy)-与小型数据库连接,实现注册登录操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

資料參考:Kivy Tutorial

效果:

環(huán)境:pycharm中的web2py

文件:

– main.py (Run this script)

– database.py

– my.kv

– users.txt

具體代碼:

# main.pyfrom kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen from kivy.properties import ObjectProperty from kivy.uix.popup import Popup from kivy.uix.label import Label from database import DataBaseclass CreateAccountWindow(Screen):namee = ObjectProperty(None)email = ObjectProperty(None)password = ObjectProperty(None)def submit(self):if self.namee.text != "" and self.email.text != "" and self.email.text.count("@") == 1 and self.email.text.count(".") > 0:if self.password != "":db.add_user(self.email.text, self.password.text, self.namee.text)self.reset()sm.current = "login"else:invalidForm()else:invalidForm()def login(self):self.reset()sm.current = "login"def reset(self):self.email.text = ""self.password.text = ""self.namee.text = ""class LoginWindow(Screen):email = ObjectProperty(None)password = ObjectProperty(None)def loginBtn(self):if db.validate(self.email.text, self.password.text):MainWindow.current = self.email.textself.reset()sm.current = "main"else:invalidLogin()def createBtn(self):self.reset()sm.current = "create"def reset(self):self.email.text = ""self.password.text = ""class MainWindow(Screen):n = ObjectProperty(None)created = ObjectProperty(None)email = ObjectProperty(None)current = ""def logOut(self):sm.current = "login"def on_enter(self, *args):password, name, created = db.get_user(self.current)self.n.text = "Account Name: " + nameself.email.text = "Email: " + self.currentself.created.text = "Created On: " + createdclass WindowManager(ScreenManager):passdef invalidLogin():pop = Popup(title='Invalid Login',content=Label(text='Invalid username or password.'),size_hint=(None, None), size=(400, 400))pop.open()def invalidForm():pop = Popup(title='Invalid Form',content=Label(text='Please fill in all inputs with valid information.'),size_hint=(None, None), size=(400, 400))pop.open()kv = Builder.load_file("my.kv")sm = WindowManager() db = DataBase("users.txt")screens = [LoginWindow(name="login"), CreateAccountWindow(name="create"),MainWindow(name="main")] for screen in screens:sm.add_widget(screen)sm.current = "login"class MyMainApp(App):def build(self):return smif __name__ == "__main__":MyMainApp().run()# database.pyimport datetimeclass DataBase:def __init__(self, filename):self.filename = filenameself.users = Noneself.file = Noneself.load()def load(self):self.file = open(self.filename, "r")self.users = {}for line in self.file:email, password, name, created = line.strip().split(";")self.users[email] = (password, name, created)self.file.close()def get_user(self, email):if email in self.users:return self.users[email]else:return -1def add_user(self, email, password, name):if email.strip() not in self.users:self.users[email.strip()] = (password.strip(), name.strip(), DataBase.get_date())self.save()return 1else:print("Email exists already")return -1def validate(self, email, password):if self.get_user(email) != -1:return self.users[email][0] == passwordelse:return Falsedef save(self):with open(self.filename, "w") as f:for user in self.users:f.write(user + ";" + self.users[user][0] + ";" + self.users[user][1] + ";" + self.users[user][2] + "n")@staticmethoddef get_date():return str(datetime.datetime.now()).split(" ")[0]#my.kv <CreateAccountWindow>:name: "create"namee: nameeemail: emailpassword: passwFloatLayout:cols:1FloatLayout:size: root.width, root.height/2Label:text: "Create an Account"size_hint: 0.8, 0.2pos_hint: {"x":0.1, "top":1}font_size: (root.width**2 + root.height**2) / 14**4Label:size_hint: 0.5,0.12pos_hint: {"x":0, "top":0.8}text: "Name: "font_size: (root.width**2 + root.height**2) / 14**4TextInput:pos_hint: {"x":0.5, "top":0.8}size_hint: 0.4, 0.12id: nameemultiline: Falsefont_size: (root.width**2 + root.height**2) / 14**4Label:size_hint: 0.5,0.12pos_hint: {"x":0, "top":0.8-0.13}text: "Email: "font_size: (root.width**2 + root.height**2) / 14**4TextInput:pos_hint: {"x":0.5, "top":0.8-0.13}size_hint: 0.4, 0.12id: emailmultiline: Falsefont_size: (root.width**2 + root.height**2) / 14**4Label:size_hint: 0.5,0.12pos_hint: {"x":0, "top":0.8-0.13*2}text: "Password: "font_size: (root.width**2 + root.height**2) / 14**4TextInput:pos_hint: {"x":0.5, "top":0.8-0.13*2}size_hint: 0.4, 0.12id: passwmultiline: Falsepassword: Truefont_size: (root.width**2 + root.height**2) / 14**4Button:pos_hint:{"x":0.3,"y":0.25}size_hint: 0.4, 0.1font_size: (root.width**2 + root.height**2) / 17**4text: "Already have an Account? Log In"on_release:root.manager.transition.direction = "left"root.login()Button:pos_hint:{"x":0.2,"y":0.05}size_hint: 0.6, 0.15text: "Submit"font_size: (root.width**2 + root.height**2) / 14**4on_release:root.manager.transition.direction = "left"root.submit()<LoginWindow>:name: "login"email: emailpassword: passwordFloatLayout:Label:text:"Email: "font_size: (root.width**2 + root.height**2) / 13**4pos_hint: {"x":0.1, "top":0.9}size_hint: 0.35, 0.15TextInput:id: emailfont_size: (root.width**2 + root.height**2) / 13**4multiline: Falsepos_hint: {"x": 0.45 , "top":0.9}size_hint: 0.4, 0.15Label:text:"Password: "font_size: (root.width**2 + root.height**2) / 13**4pos_hint: {"x":0.1, "top":0.7}size_hint: 0.35, 0.15TextInput:id: passwordfont_size: (root.width**2 + root.height**2) / 13**4multiline: Falsepassword: Truepos_hint: {"x": 0.45, "top":0.7}size_hint: 0.4, 0.15Button:pos_hint:{"x":0.2,"y":0.05}size_hint: 0.6, 0.2font_size: (root.width**2 + root.height**2) / 13**4text: "Login"on_release:root.manager.transition.direction = "up"root.loginBtn()Button:pos_hint:{"x":0.3,"y":0.3}size_hint: 0.4, 0.1font_size: (root.width**2 + root.height**2) / 17**4text: "Don't have an Account? Create One"on_release:root.manager.transition.direction = "right"root.createBtn()<MainWindow>:n: nemail: emailcreated:createdFloatLayout:Label:id: npos_hint:{"x": 0.1, "top":0.9}size_hint:0.8, 0.2text: "Account Name: "Label:id: emailpos_hint:{"x": 0.1, "top":0.7}size_hint:0.8, 0.2text: "Email: "Label:id: createdpos_hint:{"x": 0.1, "top":0.5}size_hint:0.8, 0.2text: "Created: "Button:pos_hint:{"x":0.2, "y": 0.1}size_hint:0.6,0.2text: "Log Out"on_release:app.root.current = "login"root.manager.transition.direction = "down"#users.txt tim@gmail.com;1234;tim;2019-03-02

總結

以上是生活随笔為你收集整理的asp实现注册登录界面_python app (kivy)-与小型数据库连接,实现注册登录操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。