求解如何从文本文件中读取数据并判断用户是否合法

使用tkinter创建如图所示的登录界面,完成三个按钮的功能。其中登录1依据指定用户名及密码判断用户是否合法,登录2依据文件ex6_Login.txt中用户列表判断用户是否合法。如果输入有误,显示错误提示,如果用户名和密码都正确,显示欢迎信息(使用tkinter的messagebox)

import tkinter as tk
from tkinter import messagebox

# 定义登录窗口类
class LoginWindow:

    def __init__(self):

        # 初始化窗口和布局
        self.window = tk.Tk()
        self.window.title("登录界面")
        self.window.geometry("300x200")

        # 添加账号和密码文本框
        self.account_label = tk.Label(self.window, text="账户")
        self.password_label = tk.Label(self.window, text="密码")
        self.account_entry = tk.Entry(self.window)
        self.password_entry = tk.Entry(self.window, show="*")
        self.account_label.pack()
        self.account_entry.pack()
        self.password_label.pack()
        self.password_entry.pack()

        # 添加按钮
        self.login1_button = tk.Button(self.window, text="登录1", command=self.login1)
        self.login2_button = tk.Button(self.window, text="登录2", command=self.login2)
        self.clear_button = tk.Button(self.window, text="清空", command=self.clear)
        self.login1_button.pack(side="left")
        self.login2_button.pack(side="left")
        self.clear_button.pack(side="right")

        # 运行窗口
        self.window.mainloop()

    # 登录1功能
    def login1(self):

        # 判断用户名和密码是否为空
        if not self.account_entry.get() or not self.password_entry.get():
            messagebox.showerror("错误提示", "用户名或密码不能为空")
            return

        # 判断用户名和密码是否正确
        if self.account_entry.get() == "admin" and self.password_entry.get() == "123456":
            messagebox.showinfo("欢迎信息", "欢迎登录,%s!" % self.account_entry.get())
        else:
            messagebox.showerror("错误提示", "用户名或密码不正确")

    # 登录2功能
    def login2(self):

        # 判断用户名和密码是否为空
        if not self.account_entry.get() or not self.password_entry.get():
            messagebox.showerror("错误提示", "用户名或密码不能为空")
            return

        # 读取用户列表并验证用户名和密码是否存在于列表中
        is_valid_user = False
        with open("ex6_Login.txt", "r") as f:
            for line in f:
                account, password = line.strip().split(",")
                if self.account_entry.get() == account and self.password_entry.get() == password:
                    is_valid_user = True
                    break
        
        # 显示欢迎信息或错误提示
        if is_valid_user:
            messagebox.showinfo("欢迎信息", "欢迎登录,%s!" % self.account_entry.get())
        else:
            messagebox.showerror("错误提示", "用户名或密码不正确")

    # 清空输入框
    def clear(self):
        self.account_entry.delete(0, tk.END)
        self.password_entry.delete(0, tk.END)

# 创建登录界面对象并开启窗口消息循环
if __name__ == "__main__":
    login_window = LoginWindow()


注意ex6_Login.txt文件中账号密码一行一个账号和密码之间用英文逗号隔开
如果我的回答对您有帮助请采纳,谢谢

import tkinter as tk
from tkinter import messagebox

# 按钮1的点击事件处理函数
def login1():
    username = username_entry.get()
    password = password_entry.get()

    # 判断用户名和密码是否正确
    if username == 'admin' and password == 'password':
        messagebox.showinfo('登录成功', '欢迎,' + username + '!')
    else:
        messagebox.showerror('登录失败', '用户名或密码错误!')

# 按钮2的点击事件处理函数
def login2():
    username = username_entry.get()
    password = password_entry.get()

    # 从文件中读取用户列表
    with open('ex6_Login.txt', 'r') as file:
        user_list = [line.strip().split(',') for line in file]

    # 判断用户名和密码是否在用户列表中
    if [username, password] in user_list:
        messagebox.showinfo('登录成功', '欢迎,' + username + '!')
    else:
        messagebox.showerror('登录失败', '用户名或密码错误!')

# 按钮3的点击事件处理函数
def exit_app():
    root.destroy()

# 创建主窗口
root = tk.Tk()
root.title('登录界面')

# 创建用户名标签、输入框和密码标签、输入框
username_label = tk.Label(root, text='用户名:')
username_label.grid(row=0, column=0, padx=5, pady=5)
username_entry = tk.Entry(root)
username_entry.grid(row=0, column=1, padx=5, pady=5)

password_label = tk.Label(root, text='密码:')
password_label.grid(row=1, column=0, padx=5, pady=5)
password_entry = tk.Entry(root, show='*')
password_entry.grid(row=1, column=1, padx=5, pady=5)

# 创建按钮1、按钮2和按钮3
login1_button = tk.Button(root, text='登录1', command=login1)
login1_button.grid(row=2, column=0, padx=5, pady=5)

login2_button = tk.Button(root, text='登录2', command=login2)
login2_button.grid(row=2, column=1, padx=5, pady=5)

exit_button = tk.Button(root, text='退出', command=exit_app)
exit_button.grid(row=2, column=2, padx=5, pady=5)

root.mainloop()

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7729931
  • 除此之外, 这篇博客: python中的tkinter模块中的 组件6 消息对话框(messagebox) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    用于界面提示成功,失败,警告等相关信息提示框

    tkinter。messagebox.FunctionName(title, message [, options])
    

    参数:
    FunctionName: 这是相应的消息框函数的名称.

    title: 这是在一个消息框,标题栏显示的文本.

    message: 这是要显示的文字作为消息.

    options: 选项有替代的选择,你可以用它来定制一个标准的消息框。一些可以使用的选项是默认和家长。默认选项是用来指定默认的按钮,如中止,重试,或忽略在消息框中。父选项是用来指定要显示的消息框上的顶层窗口.

    你可以使用以下功能之一

    showinfo()            显示信息对话框
    showwarning()         提示警告对话框
    showerror()           显示错误对话
    askquestion()         问题对话框
    askokcancel()         确定还是取消对话框
    askyesno()            是不是对话框
    askretrycancel()      重试或者取消对话框
    

    除了上述6个标准消息框外,还可以使用tkinter.messagebox._show函数创建其他类型 的消息框。tkinter.messagebox._show函数的控制参数如下。

      default      指定消息框的按钮。 
      icon         指定消息框的图标。  
      message      指定消息框所显示的消息。 
      parent       指定消息框的父组件。 
      title            指定消息框的标题。 
      type         指定消息框的类型。
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^