利用Python中自带Tkinter模块创建一个用户登录界面(GUI)

  第一次写博客,有点小紧张..........
  最近突然想学习一下Python的GUI框架,先从基础学起吧!Python有很多模块可以进行GUI编程,其中最简单的就是Tkinter模块了,而且该模块不需要进行安装,它是Python自带的模块,使用的时候直接import就OK! 这里强调一下,如果你使用的是python2的话,应该是import Tkinter,如果你使用的是python3的话,那么应该是import tkinter,注意不要搞错了!
  Tkinter模块一共就有十几种控件可以使用,所以说它学起来还是挺容易的,也就是因为很简单,所以它做出来的界面是比较粗糙的,但是对于平常自己做一些小东西啥的还是够用的,而且一般的大型开发也不会用到它。
  关于Tkinter模块的教程网上一搜一大把,请各位朋友自己去找吧,我就不再赘述了,下面直接上代码!!
  该代码实现的主要是用户的登陆功能和注册功能,登录过程还添加了对输入账号密码信息是否为空的检测,同样的,注册过程也添加了该检测。用户的账号密码信息是保存在一个创建好的字典里面的,然后将字典保存到指定文件中。
  本人代码小白一枚,代码写的可能有点烂。。。。各位朋友如果有啥意见欢迎在评论区一起探讨!
# -*- coding: utf-8 -*-

import tkinter as tk
import tkinter.messagebox
import pickle

window = tk.Tk()                               # 创建根窗口
window.title('Welcome to Sunkuo Website')
window.geometry('500x400')

# 在根窗口上放置相应标签和Entry控件,并摆放好位置
tk.Label(window, text='欢迎!请输入您的账号密码!', font=('Arial', 20)).pack()
tk.Label(window, text='通行证账号:', font=('Arial', 14)).place(x=50, y=100)
tk.Label(window, text='密码:', font=('Arial', 14)).place(x=50, y=150)
e_u = tk.Entry(window, show=None, font=('Arial', 12))     # 输入账号信息的Entry控件
e_u.place(x=200, y=105)
e_p = tk.Entry(window, show='*', font=('Arial', 12))      # 输入密码信息的Entry控件
e_p.place(x=200, y=155)

fr = open('userdate.txt', 'rb')         # 以二进制方式打开一个文件(只读)
user_info = pickle.load(fr)             # 使用load()将数据从文件中序列化读出
fr.close()                              # 关闭文件

# 登录函数
def sign_in():
    global user_p
    # fr = open('userdate.txt', 'rb')
    # user_info = pickle.load(fr)
    # fr.close()

    # 通行证账号判断
    flag = 1                 # 设定标志位(标志:输入通行证账号不能为空)
    if e_u.get() == '':      # 判断用户是否输入通行证账号
        flag = 0
        tkinter.messagebox.showerror(title='抱歉!', message='输入通行证账号不能为空!')

    i = 0
    flag_1 = 0               # 设定标志位(标志:是否从用户信息中遍历到用户所输入的通行证账号)
    for key in user_info:    # 遍历用户信息
        if (key == e_u.get()) & (flag == 1):     # 若用户已经输入账号且从用户信息中遍历到账号
            flag_1 = 1
            user_p = user_info[key]              # 将用户信息的账号所对应的密码提取出来
            break
        i += 1
        if (i == len(user_info)) & (flag == 1):  # 若遍历结束后没有发现用户所输入账号,则输出通行证账号不存在
            tkinter.messagebox.showerror(title='抱歉!', message='通行证账号不存在')

    # 密码判断
    if flag_1 == 1:                              # 标志位判断(成立:已经遍历到账号信息,不成立:没有遍历到账号信息)
        if e_p.get() == '':                      # 判断用户所输入密码是否为空
            tkinter.messagebox.showerror(title='抱歉!', message='输入密码不能为空!')

        elif user_p == e_p.get():                # 判断用户所输入密码与从用户信息文件中取出的密码是否相同
            tkinter.messagebox.showinfo(title='恭喜您!', message='登陆成功!')
            window.quit()                        # 登陆成功,关闭根窗口
        else:
            tkinter.messagebox.showwarning(title='抱歉', message='密码有误,请重新输入!')

# 注册函数
def b_register():
    def register():
        # 通行证账号检测
        flag_2 = 1                               # 设定标志位(标志:用户输入的通行证账号是否为空)
        if e_register_u.get() == '':             # 判断用户输入的通行证账号是否为空
            flag_2 = 0
            tkinter.messagebox.showerror(title='抱歉!', message='输入通行证账号不能为空!')

        flag_3 = 1                               # 设定标志位(标志:用户输入的通行证账号是否已被注册)
        for key in user_info:                    # 遍历用户信息
            if (key == e_register_u.get()) & (flag_2 == 1):    # 若用户输入的通行证账号不为空,且遍历到的账号信息与输入的相同
                flag_3 = 0
                tkinter.messagebox.showerror(title='抱歉!', message='该通行证账号已注册!')

        #密码检测
        flag_4 = 1                               # 设定标志位(标志:用户输入密码是否为空)
        if (e_register_p.get() == '') & (flag_2 == 1):     # 若用户输入的通行证账号不为空,且输入的密码为空
            flag_4 = 0
            tkinter.messagebox.showerror(title='抱歉!', message='输入密码不能为空!')

        if (e_register_p.get() != e_register_np.get()) & (flag_3 == 1):        #判断两次密码输入是否一致
            tkinter.messagebox.showwarning(title='抱歉', message='两次密码输入不一致,请重新输入!')

        # 两次密码输入一致,进行下面操作
        if (e_register_p.get() == e_register_np.get()) & (flag_2 == 1) & (flag_3 == 1) & (flag_4 == 1):
            user_info[e_register_u.get()] = e_register_p.get()       # 将输入的账号、密码存储在字典中

            fw = open('userdate.txt', 'wb')                          # 以二进制方式打开一个文件(只写)
            pickle.dump(user_info, fw)                               # 使用dump()将数据序列化到文件中
            fw.close()                                               # 关闭文件

            tkinter.messagebox.showinfo(title='恭喜您!', message='注册成功!')
            window_register.destroy()                                # 关闭注册窗口

    window_register = tk.Toplevel(window)                            # 在根窗口上建立一个注册窗口
    window_register.title('Register Window')
    window_register.geometry('400x300')

    # 在注册窗口上放置相应标签和Entry控件,并摆放好位置
    tk.Label(window_register, text='通行证账号:', font=('Arial', 14)).place(x=25, y=50)
    tk.Label(window_register, text='密码:', font=('Arial', 14)).place(x=25, y=100)
    tk.Label(window_register, text='确认密码:', font=('Arial', 14)).place(x=25, y=160)
    e_register_u = tk.Entry(window_register, show=None, font=('Arial', 12))   # 输入注册账号信息的Entry控件
    e_register_u.place(x=165, y=50)
    e_register_p = tk.Entry(window_register, show=None, font=('Arial', 12))   # 输入注册密码信息的Entry控件
    e_register_p.place(x=165, y=100)
    e_register_np = tk.Entry(window_register, show=None, font=('Arial', 12))  # 第二次输入注册密码信息的Entry控件
    e_register_np.place(x=165, y=160)
    # 在注册窗口上建立一个按键
    b_sign_in_register = tk.Button(window_register, text='确认注册', font=('Arial', 14), command=register).place(x=180, y=220)

# 在根窗口上建立两个按键
b_sign_in = tk.Button(window, text='登录', font=('Arial', 14), command=sign_in).place(x=190, y=220)
b_register = tk.Button(window, text='注册', font=('Arial', 14), command=b_register).place(x=320, y=220)

window.mainloop()     # 主窗口循环显示
  • 15
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要制作一个能够读取数据集的窗口,可以使用tkinter库来创建GUI界面,并利用pandas库读取数据集。具体实现方法如下: 1. 导入必要的库 ```python from tkinter import * from tkinter import filedialog import pandas as pd ``` 2. 创建GUI界面 ```python root = Tk() root.title("读取数据集") root.geometry("400x200") ``` 在上述代码创建了一个窗口,并设置了窗口的标题和大小。 3. 创建读取数据集的函数 ```python def read_dataset(): # 弹出文件选择对话框,选择要读取的数据集文件 file_path = filedialog.askopenfilename(title="选择数据集文件", filetypes=[("CSV Files", "*.csv")]) # 读取数据集文件 dataset = pd.read_csv(file_path) # 在文本框显示数据集的前5行数据 text_box.delete("1.0", END) text_box.insert(END, dataset.head()) ``` 在上述代码,定义了一个名为read_dataset()的函数,用于读取数据集。该函数使用了tkinter的filedialog.askopenfilename()方法来弹出文件选择对话框,让用户选择要读取的数据集文件。然后使用pandas库的read_csv()方法读取数据集文件,并使用Text控件的delete()方法清空文本框原有的内容,使用insert()方法将数据集的前5行数据插入到文本框。 4. 在界面添加按钮和文本框 ```python # 创建一个按钮,用于触发读取数据集的函数 button = Button(root, text="选择数据集", command=read_dataset) button.pack() # 创建一个文本框,用于显示数据集的前5行数据 text_box = Text(root) text_box.pack() ``` 在上述代码创建了一个名为button的按钮控件,用于触发读取数据集的函数。同时也创建了一个名为text_box的文本框控件,用于显示数据集的前5行数据。 5. 运行窗口 ```python root.mainloop() ``` 在上述代码,使用了mainloop()方法来运行窗口,使其保持运行状态。 通过上述方法,可以制作一个能够读取数据集的窗口。用户可以通过点击按钮来选择要读取的数据集文件,程序将会自动读取数据集文件,并将前5行数据显示在文本框

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值