You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅用Pandas与Tkinter实现登录页:Excel数据校验及读取问题

登录页面代码问题修复(Tkinter + Pandas + Excel)

原代码存在的问题

  • 拼写错误:NONE 应改为 None,messagebox.showerr 应改为 messagebox.showerror
  • iterrows() 使用不当:该方法返回(索引, 行数据)元组,直接取行数据即可,无需额外转成DataFrame再排序
  • 比较逻辑错误:reset_index(drop=True, inplace=True)是原地修改DataFrame,返回值为None,不能用来做相等比较
  • 校验逻辑缺陷:循环每一行时,第一行不匹配就直接弹窗提示,应遍历完所有行都不匹配再提示错误

修正后的完整代码

import pandas as pd
from tkinter import *
import tkinter.messagebox as messagebox

# 读取用户数据Excel文件,确保文件包含USERNAME和PASSWORD列
try:
    user_df = pd.read_excel("users.xlsx")
except FileNotFoundError:
    # 文件不存在时自动初始化空文件
    user_df = pd.DataFrame(columns=["USERNAME", "PASSWORD"])
    user_df.to_excel("users.xlsx", index=False)

def report_window():
    # 登录成功后的跳转窗口示例
    success_win = Toplevel(root)
    success_win.title("登录成功")
    Label(success_win, text="欢迎进入系统!").pack(padx=20, pady=20)

def USPchecker():
    obt_Username = UsrInp.get().strip()
    obt_Password = PassInp.get().strip()

    # 校验输入是否为空
    if not obt_Username or not obt_Password:
        messagebox.showerror("错误", "用户名或密码不能为空")
        return

    # 遍历用户数据匹配账号密码
    login_success = False
    for _, row in user_df.iterrows():
        if row["USERNAME"] == obt_Username and row["PASSWORD"] == obt_Password:
            login_success = True
            break

    if login_success:
        report_window()
    else:
        messagebox.showerror("DOXC", "用户名或密码错误")

# 构建登录主窗口
root = Tk()
root.title("用户登录")

# 用户名输入区域
Label(root, text="用户名:").grid(row=0, column=0, padx=10, pady=10)
UsrInp = Entry(root)
UsrInp.grid(row=0, column=1, padx=10, pady=10)

# 密码输入区域
Label(root, text="密码:").grid(row=1, column=0, padx=10, pady=10)
PassInp = Entry(root, show="*")
PassInp.grid(row=1, column=1, padx=10, pady=10)

# 登录按钮
Button(root, text="登录", command=USPchecker).grid(row=2, column=0, columnspan=2, pady=10)

root.mainloop()

额外说明

  1. 确保users.xlsx与代码在同一目录,或修改read_excel的文件路径
  2. 密码输入框添加show="*"隐藏输入内容,符合登录页的隐私需求
  3. 增加空输入校验,避免无效提交
  4. 读取Excel时添加异常处理,文件不存在时自动创建空文件

内容的提问来源于stack exchange,提问作者Davinder Singh Puar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:57:17