Tkinter練習----註冊登錄界面

話不多說,直接代碼,代碼都很簡單

import tkinter as tk
import sqlite3

class Database_login:
    def __init__(self):
        self.databese = sqlite3.connect('login.db')
        self.cur = self.databese.cursor()
        try:
            self.cur.execute('''
                            CREATE TABLE IF NOT EXISTS num(
                                num char(20),
                                password char(20)
                            );
                            ''')
        except:
            print('創建表失敗')

    def insert(self,num,password):
        self.cur.execute("insert into num \
                        values ('%s','%s')"%(num,password))
        self.databese.commit()

    def update(self,num,password):
        self.cur.execute('update num set password = %s where num = %s'%(password,num))
        self.databese.commit()

    def select(self,num):
        self.psword = self.cur.execute('select password from num where num = %s '%(num))
        for row in self.psword:
            return row[0]
        self.databese.commit()

    def find(self,num):
        self.psword = self.cur.execute('select password from num where num = %s '%(num))
        if self.psword != None:
            return False



class Login():
    def __init__(self,master):

        self.reg = tk.Tk()

        self.database = Database_login()

        self.loginNum = tk.Label(master,text='賬號').grid(row=0,column=0,padx=10)
        self.loginPs = tk.Label(master,text='密碼').grid(row=1,column=0,padx=10)

        self.v1 = tk.StringVar()
        self.v2 = tk.StringVar()

        self.entryNum = tk.Entry(master,textvariable=self.v1)
        self.entryNum.grid(row=0,column=1,padx=10,pady=5)
        self.entryNum.focus_set()
        self.entryPs = tk.Entry(master,textvariable=self.v2,show='*')
        self.entryPs.grid(row=1,column=1,padx=10,pady=5)

        self.buttonSuess = tk.Button(master,text='登錄',command=self.login).grid(row=3,column=0,sticky=tk.W,padx=10,pady=5)
        self.buttonReg = tk.Button(master,text='註冊',command=self.regi).grid(row=3,column=1,sticky=tk.E,padx=10,pady=5)
        #buttonSuess = tk.Button(gui,text='退出').grid(row=3,column=2)

    def login(self):
        Num = self.entryNum.get()
        Psword = self.entryPs.get()

        RPsword = self.database.select(Num)

        if Psword == RPsword:
            print('login sucessful!')
        else:
            print('賬號或密碼輸出錯誤')

    def regi(self):
        self.Rmain = Regi(self.reg)

class Regi():
    def __init__(self,master):

        self.database = Database_login()

        self.loginNum = tk.Label(master,text='賬號').grid(row=0,column=0,padx=10)
        self.loginPs = tk.Label(master,text='密碼').grid(row=1,column=0,padx=10)
        self.sure = tk.Label(master,text='再次輸入密碼').grid(row=2,column=0,padx=10)

        self.v1 = tk.StringVar()
        self.v2 = tk.StringVar()
        self.v3 = tk.StringVar()

        self.entryNum = tk.Entry(master,textvariable=self.v1)
        self.entryNum.grid(row=0,column=1,padx=10,pady=5)
        self.entryPs = tk.Entry(master,textvariable=self.v2,show='*')
        self.entryPs.grid(row=1,column=1,padx=10,pady=5)
        self.entrySure = tk.Entry(master,textvariable=self.v3,show='*')
        self.entrySure.grid(row=2,column=1,padx=10,pady=5)

        self.buttonSuess = tk.Button(master,text='註冊',command=self.reg).grid(row=3,column=0,sticky=tk.W,padx=10,pady=5)
        self.buttonReg = tk.Button(master,text='退出',command=master.quit).grid(row=3,column=1,sticky=tk.E,padx=10,pady=5)


    def reg(self):
        top = tk.Toplevel()
        self.num = self.entryNum.get()
        self.psword = self.entryPs.get()
        self.sure = self.entrySure.get()

        self.Rnum = self.database.select
        
        try:
            if self.psword == self.sure:
                if self.database.find(self.num):
                    self.database.insert(self.num,self.psword)
                    self.entryNum.delete(0,'end')
                    self.entryPs.delete(0,'end')
                    self.entrySure.delete(0,'end')
                else:
                    msg = tk.Message(top,text='賬號已存在',width=160)
                    msg.pack()
            else:
                msg = tk.Message(top,text='兩次密碼不一樣',width=160)
                msg.pack()
        except:
            msg = tk.Message(top,text='請輸入賬號密碼',width=160)
            msg.pack()



gui = tk.Tk()
main = Login(gui)

gui.mainloop()

不知道如何實現點擊按鈕出現另外一個界面的操作,有沒有大神教下我,是不是隻能用Toplevel實現,求求了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章