Python制作登陆界面(2)(中等级)

前言  

本人又来教大家制作登陆界面啦!

大家知道弹窗在电脑中无处不在:浏览器界面啊,Python编程界面啊,网络会议室啊等等。

相信你们在使用Python中肯定用过一个庞大的GUI模块:tkinter。

这次我们会用到它来制作弹窗登陆界面。

1、关于tkinter

tkinter是python中最基础,最标准的GUI库。

除了它以外,在python里还有许许多多的GUI库:wx,PyQt5……

而这些都是Python不自带的,必须使用管理员或终端使用pip install(使用Mac的伙伴用sudo apt-get)指令来下载。

(有些Python版本在下载的时候不会自带tkinter,cmd输入pip install tkinter(Mac的用brew install python-tk)即可)

例:

import tkinter
root = tkinter.Tk()
root.title("示例")
root.geometry("200x300")

效果:

tkinter里面不仅有Tk(GUI主界面),title(标题)和geometry(大小),还有Entry(输入框),Label(标签),Frame(框,有些类似于Menu),Menu(菜单),Toplevel(叠加GUI)等。

无论如何,这些功能前面都要加一个tkinter.(也可以是tk.,前提是在导入模块时要输入import tkinter as tk),不然会报错:

2、制作

1、基本框架

导入模块:

from tkinter import *    #这里为了简便,一般不建议使用
from tkinter import messagebox
import pickle

基本结构:

Lw = Tk()
Lw.title("测试")
Lw.geometry("500x300")
Label(Lw, text = "登录                ", font = ("幼圆", 26), fg = "white", bg = "green").place(x = 10, y = 10)
Label(Lw, text = "用户名:", font = ("幼圆", 14), fg = "green").place(x = 20, y = 70)    #用户名
Label(Lw, text = "密码:", font = ("幼圆", 14), fg = "green").place(x = 20, y = 100)    #密码

_usn = StringVar()
eusn = Entry(Lw, textvariable = _usn, font = ("幼圆", 14), width = 30)
eusn.place(x = 100, y = 70)

_pwd = StringVar()
epwd = Entry(Lw, textvariable = _pwd, font = ("幼圆", 14), width = 30, show = "⁕")
epwd.place(x = 100, y = 100)

2、功能部分

登录:

def login():
    countdown = 0
    usn = _usn.get()
    pwd = _pwd.get()
    try:
        with open('usr_info.pickle', 'rb') as usr_file:
            usrs_info = pickle.load(usr_file)
    except FileNotFoundError:
        with open('usr_info.pickle', 'wb') as usr_file:
            usrs_info = {'admin': 'admin'}
            pickle.dump(usrs_info, usr_file)
    if usn in usrs_info:
        if pwd == usrs_info[usn]:
            messagebox.showinfo("欢迎", "登陆成功!")
        else:
            messagebox.showerror("错误", "用户名或密码错误!")

登录时会自动往用户库里写入用户信息,若没有库的话会自动创建一个。

此程序会辨别输入的用户到底有没有库里,不在的话会显示错误。

注册与控件:

def signIn():
    def signUser():
        nu = _nusr.get()
        np = _npwd.get
        nc = _npco.get()
        try:
            with open('usr_info.pickle', 'rb') as usr_file:
                exist_usr_info = pickle.load(usr_file)
        except FileNotFoundError:
            exist_usr_info = {}
        if nu and np in exist_usr_info:
            messagebox.showerror("错误", "该用户已存在!")
        elif np != nc:
            messagebox.showerror("错误", "密码与验证密码不一致!")
        elif nu == "" or np == "":
            messagebox.showerror("错误", "用户名或密码不能为空!")
        else:
            exist_usr_info[nu] = np
            with open('usr_info.pickle', 'wb') as usr_file:
                pickle.dump(exist_usr_info, usr_file)
            tk.messagebox.showinfo('欢迎', '注册成功')
            Sw.destroy()
    Sw = Toplevel(Lw)
    Sw.geometry('350x200')
    Sw.title('注册')
    Label(Sw, text='用户名:').place(x=10, y=10)
    Label(Sw, text='请输入密码:').place(x=10, y=50)
    Label(Sw, text='请再次输入密码:').place(x=10, y=90)
    
    _nusr = StringVar()
    Entry(Sw, textvariable=_nusr).place(x=150, y=10)
    
    _npwd = StringVar()
    Entry(Sw, textvariable=new_pwd, show="⁕").place(x=150, y=50)
    
    _npco = StringVar()
    Entry(Sw, textvariable=new_pwd_confirm, show="⁕").place(x=150, y=90)
    coBt = Button(Sw, text="确认注册",command=signUser)
    coBt.place(x=150, y=130)
siBt = Button(Lw, text = "没有账号?注册", command = signIn)
siBt.place(x = 50, y = 200)
loBt = Button(Lw, text = "登录", command = login)
loBt.place(x = 10, y = 200)

3、完整代码

#!/usr/bin/env/python38
#-*- coding:utf-8 -*-
#Author:Ez135513
#Created time:7/20/2022
from tkinter import *    #这里为了简便,一般不建议使用
from tkinter import messagebox
import pickle
Lw = Tk()
Lw.title("测试")
Lw.geometry("500x300")
Label(Lw, text = "登录                ", font = ("幼圆", 26), fg = "white", bg = "green").place(x = 10, y = 10)
Label(Lw, text = "用户名:", font = ("幼圆", 14), fg = "green").place(x = 20, y = 70)    #用户名
Label(Lw, text = "密码:", font = ("幼圆", 14), fg = "green").place(x = 20, y = 100)    #密码

_usn = StringVar()
eusn = Entry(Lw, textvariable = _usn, font = ("幼圆", 14), width = 30)
eusn.place(x = 100, y = 70)

_pwd = StringVar()
epwd = Entry(Lw, textvariable = _pwd, font = ("幼圆", 14), width = 30, show = "⁕")
epwd.place(x = 100, y = 100)

def login():
    countdown = 0
    usn = _usn.get()
    pwd = _pwd.get()
    try:
        with open('usr_info.pickle', 'rb') as usr_file:
            usrs_info = pickle.load(usr_file)
    except FileNotFoundError:
        with open('usr_info.pickle', 'wb') as usr_file:
            usrs_info = {'admin': 'admin'}
            pickle.dump(usrs_info, usr_file)
    if usn in usrs_info:
        if pwd == usrs_info[usn]:
            messagebox.showinfo("欢迎", "登陆成功!")
        else:
            messagebox.showerror("错误", "用户名或密码错误!")

def signIn():
    def signUser():
        nu = _nusr.get()
        np = _npwd.get
        nc = _npco.get()
        try:
            with open('usr_info.pickle', 'rb') as usr_file:
                exist_usr_info = pickle.load(usr_file)
        except FileNotFoundError:
            exist_usr_info = {}
        if nu and np in exist_usr_info:
            messagebox.showerror("错误", "该用户已存在!")
        elif np != nc:
            messagebox.showerror("错误", "密码与验证密码不一致!")
        elif nu == "" or np == "":
            messagebox.showerror("错误", "用户名或密码不能为空!")
        else:
            exist_usr_info[nu] = np
            with open('usr_info.pickle', 'wb') as usr_file:
                pickle.dump(exist_usr_info, usr_file)
            tk.messagebox.showinfo('欢迎', '注册成功')
            Sw.destroy()
    Sw = Toplevel(Lw)
    Sw.geometry('350x200')
    Sw.title('注册')
    Label(Sw, text='用户名:').place(x=10, y=10)
    Label(Sw, text='请输入密码:').place(x=10, y=50)
    Label(Sw, text='请再次输入密码:').place(x=10, y=90)
    
    _nusr = StringVar()
    Entry(Sw, textvariable=_nusr).place(x=150, y=10)
    
    _npwd = StringVar()
    Entry(Sw, textvariable=new_pwd, show="⁕").place(x=150, y=50)
    
    _npco = StringVar()
    Entry(Sw, textvariable=new_pwd_confirm, show="⁕").place(x=150, y=90)
    coBt = Button(Sw, text="确认注册",command=signUser)
    coBt.place(x=150, y=130)
siBt = Button(Lw, text = "没有账号?注册", command = signIn)
siBt.place(x = 50, y = 200)
loBt = Button(Lw, text = "登录", command = login)
loBt.place(x = 10, y = 200)

大功告成!

  • 6
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用Python的tkinter模块来制作登陆界面,以下是一个简单的示例代码: ```python from tkinter import * from tkinter import messagebox def login(): username = entry_username.get() password = entry_password.get() if username == "admin" and password == "12345": messagebox.showinfo("Login", "Login successful!") else: messagebox.showerror("Login", "Invalid username or password") root = Tk() root.title("Login") label_username = Label(root, text="Username") label_username.pack() entry_username = Entry(root) entry_username.pack() label_password = Label(root, text="Password") label_password.pack() entry_password = Entry(root, show="*") entry_password.pack() button_login = Button(root, text="Login", command=login) button_login.pack() root.mainloop() ``` 在这个示例,我们使用了tkinter的Label、Entry和Button来创建登陆界面。当用户点击“Login”按钮时,程序会获取用户名和密码,并进行验证。如果用户名和密码都是正确的,程序会弹出一个消息框,显示“Login successful!”的消息,否则会弹出一个错误消息框,显示“Invalid username or password”的消息。 ### 回答2: Python可以通过使用图形用户界面(GUI)库来制作登录界面。其,常用的GUI库有Tkinter、PyQt、wxPython等。 以Tkinter为例: 1. 首先,需要导入Tkinter库:`import tkinter as tk`。 2. 创建一个窗口对象:`window = tk.Tk()`。 3. 在窗口添加各种组件,如输入框和按钮,用于输入用户名和密码以及点击登录操作。 ```python # 创建用户名和密码的标签 user_label = tk.Label(window, text="用户名:") password_label = tk.Label(window, text="密码:") # 创建用户名和密码的输入框 user_entry = tk.Entry(window) password_entry = tk.Entry(window, show='*') # 创建登录按钮 login_button = tk.Button(window, text="登录", command=login) ``` 4. 定义登录函数,用于验证用户名和密码,并进行相应操作。 ```python def login(): username = user_entry.get() password = password_entry.get() if username == "admin" and password == "password": # 假设用户名为admin,密码为password tk.messagebox.showinfo("登录成功", "欢迎使用!") else: tk.messagebox.showerror("登录失败", "用户名或密码错误!") ``` 5. 将组件放置到窗口,并设置窗口的大小和标题。 ```python user_label.pack() user_entry.pack() password_label.pack() password_entry.pack() login_button.pack() window.title("登录界面") window.geometry("300x200") ``` 6. 最后,通过调用窗口对象的`mainloop()`函数来显示窗口并进入事件循环以响应用户操作。 ```python window.mainloop() ``` 以上代码展示了如何使用Tkinter库制作一个简单的登录界面,用户输入正确的用户名和密码后显示登录成功消息,否则显示登录失败消息。根据实际需求,还可以添加更多功能,如记住密码、忘记密码等。 ### 回答3: Python制作登陆界面的方法有很多种,以下是一种常用的简单方法: 首先,导入所需的模块,如tkinter用于图形界面设计、sqlite3用于数据库操作等。 然后,创建主窗口,并设置窗口的标题、大小等参数。 接下来,创建所需的控件,如标签、输入框、按钮等,并进行布局。 通过布局函数,将各个控件放置在合适的位置。 创建一个函数,用于验证用户的登录信息。在该函数,获取用户输入的用户名和密码,然后与数据库存储的信息进行比较,判断是否登录成功。如果成功,显示登录成功的提示信息,并进行相应的操作;否则,显示登录失败的提示信息。 对于数据库操作,可以使用sqlite3模块创建一个数据库文件,并在其创建一个用户表,存储用户的用户名和密码。 最后,通过主循环让窗口保持运行状态,等待用户的操作。 以上是一个简单的Python制作登陆界面的步骤,具体的代码实现可以根据需求和个人喜好进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值