Python3 Tkinkter + SQLite实现登录和注册界面

﹏ヽ暗。殇╰゛Y 2022-12-20 02:26 325阅读 0赞

这篇文章主要为大家详细介绍了Python3 Tkinkter + SQLite实现登录和注册界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Python3 Tkinkter + SQLite 实现登录和注册界面,供大家参考,具体内容如下

Ubuntu14 + Python3.4 + Pycharm2018

一、设计数据库

数据库内容(login.db):用户名,密码,邮箱,密码错误次数(达到三次时锁定)








1

2

3

4

5

6

create table loginuser (

 username varchar(30) NOT NULL PRIMARY KEY ,

 password varchar(16) NOT NULL ,

 email varchar NOT NULL ,

 loginerror int

);

二、登录界面Tkinter

login.py

1.登录界面代码

2.注册界面代码








1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

from tkinter import

import sqlite3

import tkinter.messagebox as messagebox

  

  

class LoginPage:

  “””登录界面”””

  def init(self, master):

    self.root = master

    self.root.geometry(‘400x200+600+400’)

    self.root.title(‘项目资源管理平台Alpha0.1’)

    self.conn = sqlite3.connect(‘data/login.db’)

    self.username = StringVar()

    self.password = StringVar()

    self.page = Frame(self.root)

    self.creatapage()

  

  def creatapage(self):

    “””界面布局”””

    Label(self.page).grid(row=0)

    Label(self.page, text=‘用户名:’).grid(row=1, stick=W, pady=10)

    Entry(self.page, textvariable=self.username).grid(row=1, column=1, stick=E)

    Label(self.page, text=‘密码:’).grid(row=2, stick=W, pady=10)

    Entry(self.page, textvariable=self.password, show=).grid(row=2, stick=E, column=1)

    Button(self.page, text=‘登录’, command=self.login).grid(row=3, stick=W, pady=10)

    Button(self.page, text=‘注册账号’, command=self.register).grid(row=3, stick=E, column=1)

    self.page.pack()

  

  def login(self):

    “””登录功能”””

    curs = self.conn.cursor()

    query = “select username, password, loginerror from loginuser where username=’%s’” % self.username.get()

    curs.execute(query) # 返回一个迭代器

    c = curs.fetchall() # 接收全部信息

    if len(c) == 0:

      messagebox.showerror(‘登录失败’, ‘账户不存在’)

    else:

      us, pw, lerror = c[0]

      if lerror >= 3:

        messagebox.showwarning(‘登录失败’, ‘账户已被锁定’)

      elif us == self.username.get() and pw == self.password.get():

        self.conn.close()

        messagebox.showinfo(‘登录成功’, ‘欢迎:%s’ % us)

      else:

        messagebox.showwarning(‘登录失败’, ‘密码错误’)

  

  def register(self):

    “””注册功能跳转”””

    self.conn.close()

    self.page.destroy()

    RegisterPage(self.root)

  

  

class RegisterPage:

  “””注册界面”””

  def init(self, master=None):

    self.root = master

    self.root.title(‘账号注册’)

    self.root.geometry(‘400x250’)

    self.conn = sqlite3.connect(‘data/login.db’)

    self.username = StringVar()

    self.password0 = StringVar() # 第一次输入密码

    self.password1 = StringVar() # 第二次输入密码

    self.email = StringVar()

    self.page = Frame(self.root)

    self.createpage()

  

  def createpage(self):

    “””界面布局”””

    Label(self.page).grid(row=0)

    Label(self.page, text=“账号:”).grid(row=1, stick=W, pady=10)

    Entry(self.page, textvariable=self.username).grid(row=1, column=1, stick=E)

    Label(self.page, text=“密码:”).grid(row=2, stick=W, pady=10)

    Entry(self.page, textvariable=self.password0, show=).grid(row=2, column=1, stick=E)

    Label(self.page, text=“再次输入:”).grid(row=3, stick=W, pady=10)

    Entry(self.page, textvariable=self.password1, show=).grid(row=3, column=1, stick=E)

    Label(self.page, text=“Email*:”).grid(row=4, stick=W, pady=10)

    Entry(self.page, textvariable=self.email).grid(row=4, column=1, stick=E)

    Button(self.page, text=“返回”, command=self.repage).grid(row=5, stick=W, pady=10)

    Button(self.page, text=“注册”, command=self.register).grid(row=5, column=1, stick=E)

    self.page.pack()

  

  def repage(self):

    “””返回登录界面”””

    self.page.destroy()

    self.conn.close()

    LoginPage(self.root)

  

  def register(self):

    “””注册”””

    if self.password0.get() != self.password1.get():

      messagebox.showwarning(‘错误’, ‘密码核对错误’)

    elif len(self.username.get()) == 0 or len(self.password0.get()) == 0 or len(self.email.get()) == 0:

      messagebox.showerror(“错误”, “不能为空”)

    else:

      curs = self.conn.cursor()

      query = ‘insert into loginuser values (?,?,?,?)’

      val = [self.username.get(), self.password0.get(), self.email.get(), 0]

      try:

        curs.execute(query, val)

        self.conn.commit()

        self.conn.close()

        messagebox.showinfo(“成功”, “注册成功,按确定返回登录界面”)

        self.page.destroy()

        LoginPage(self.root)

      except sqlite3.IntegrityError:

        messagebox.showerror(“注册失败”, “该账户已存在”)

  

  

if name == main:

  root = Tk()

  LoginPage(root)

  root.mainloop()

三、实现效果

1.登录界面:

bbab955a2d5ad761895185996f3c1c47.png

2.注册界面:

7a3603b2e6cae1e03e098fd4adbc5cf5.png

以上就是本文的全部内容,希望对大家的学习有所帮助。

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读