python - 如何将 Tkinter 与 Python 登录屏幕集成?

标签 python authentication tkinter screen

我在这里使用 Tkinter 创建登录屏幕。目前,底部的“让我保持登录状态”按钮是多余的,并且会保持不变。我想要做的是使用这段代码:

from tkinter import *

root = Tk()

label_1 = Label(root, text="Username")
label_2 = Label(root, text="Password")

entry_1 = Entry(root)
entry_2 = Entry(root)

label_1.grid(row=0, sticky=E)
label_2.grid(row=1, sticky=E)
entry_1.grid(row=0, column=1)
entry_2.grid(row=1, column=1)

checkbox = Checkbutton(root, text="Keep me logged in")
checkbox.grid(columnspan=2)

连同:

username = "john"
input("Username: ")
while not username:
    if username == "john":
        print("Welcome")
    else:
        print("User not found")


password = "password"
while not password:
    input("password: ")
    if password == "password":
        print("Logged in")
    else:
        print("Incorrect password")

但是登录代码不起作用,最重要的是我不知道从哪里开始将两者相互集成。 我是 python 的新手,对 Tkinter 更是如此,但我迫切需要这种帮助!

提前致谢!

最佳答案

我扩展了你的例子。我制作了一个包含您的登录窗口的类。

from tkinter import *
import tkinter.messagebox as tm


class LoginFrame(Frame):
    def __init__(self, master):
        super().__init__(master)

        self.label_username = Label(self, text="Username")
        self.label_password = Label(self, text="Password")

        self.entry_username = Entry(self)
        self.entry_password = Entry(self, show="*")

        self.label_username.grid(row=0, sticky=E)
        self.label_password.grid(row=1, sticky=E)
        self.entry_username.grid(row=0, column=1)
        self.entry_password.grid(row=1, column=1)

        self.checkbox = Checkbutton(self, text="Keep me logged in")
        self.checkbox.grid(columnspan=2)

        self.logbtn = Button(self, text="Login", command=self._login_btn_clicked)
        self.logbtn.grid(columnspan=2)

        self.pack()

    def _login_btn_clicked(self):
        # print("Clicked")
        username = self.entry_username.get()
        password = self.entry_password.get()

        # print(username, password)

        if username == "john" and password == "password":
            tm.showinfo("Login info", "Welcome John")
        else:
            tm.showerror("Login error", "Incorrect username")


root = Tk()
lf = LoginFrame(root)
root.mainloop()

很抱歉没有逐行检查那里发生的事情。我把它留给你弄清楚。这是很好的锻炼。但我会说最重要的是 command = self._login_btn_clicked。当您单击登录按钮时,将执行此功能。在此函数中,您获取用户名和密码的值,并检查它们是否正确。此外,我没有将任何回调附加到复选框。但它与已经完成的类似。

编辑:根据评论中的要求进行编辑。

Login prompt

关于python - 如何将 Tkinter 与 Python 登录屏幕集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28156719/

相关文章:

python - pyplot TwoSlopeNorm LinearSegmentedColormap 中零值的唯一颜色

authentication - 实现网站注册登录+OpenID的多种方式

python - 如何在 Tkinter 中更改 Frame 的背景?

python - 在 tkinter Canvas 中嵌入来自 Arduino 的 Matplotlib 实时绘图数据

python - 如何删除实例化对象Python?

python - 使用 BeautifulSoup 和请求解析嵌套标签

c# - 拒绝对 asp.net 中除 "~/"路径以外的所有页面匿名

php - 非常简单的 PHP + MySql 登录表单不起作用?

python - 如何将字典存储在文件中并读取/写入该文件?

python - google.colab 模块中是否有关闭运行时的功能