Python 如何使我的tkinter登录系统工作?

Python 如何使我的tkinter登录系统工作?,python,tkinter,pastebin,Python,Tkinter,Pastebin,所有我想要的是一个基本的Pastebin“数据库”为我的程序工作登录系统,但我不知道如何做到这一点 在您输入正确的登录详细信息并按下“回车”按钮后,我希望被重定向到一个新窗口,在该窗口中我的程序将打开,如果Pastebin登录详细信息错误,则不被重定向。我该怎么做 我的代码: from tkinter import * import requests win = Tk() win.geometry("500x500") win.title("Login Page&

所有我想要的是一个基本的Pastebin“数据库”为我的程序工作登录系统,但我不知道如何做到这一点

在您输入正确的登录详细信息并按下“回车”按钮后,我希望被重定向到一个新窗口,在该窗口中我的程序将打开,如果Pastebin登录详细信息错误,则不被重定向。我该怎么做

我的代码:

from tkinter import *
import requests

win = Tk()
win.geometry("500x500")
win.title("Login Page")


def validateLogin():
    accounts = requests.get("https://pastebin.com/pzhDWPDq")

    print("username entered :", user1.get())
    print("password entered :", passwd1.get())

    user = user1.get()
    pword = passwd1.get()

    if f"{user}::{pword}" in accounts:
        return True
    else:
        return False


userlvl = Label(win, text="Username :")
passwdlvl = Label(win, text="Password  :")

user1 = Entry(win, textvariable=StringVar())
passwd1 = Entry(win, textvariable=IntVar().set(""))

enter = Button(win, text="Enter", command=lambda: validateLogin(), bd=0)

enter.configure(bg="pink")
user1.place(x=200, y=220)
passwd1.place(x=200, y=270)
userlvl.place(x=130, y=220)
passwdlvl.place(x=130, y=270)
enter.place(x=238, y=325)

win.mainloop()

URL链接将获得HTML版本,因此您需要使用原始内容链接

下面是一个经过修改的
validateLogin()


请注意,不建议存储纯文本密码。

如果您不打算保留对tkinter变量的引用(
StringVar
IntVar
),那么它们就没有意义了。另外,
command=lambda:validateLogin()
可以替换为
command=validateLogin
。谢谢你的提示,如果你说它们没用,我会删除它们。还有一个安全问题:如果你嵌入
https://pastebin.com/pzhDWPDq
在您的代码中,是什么阻止某人将用户名/密码视为纯文本?你还必须加密密码。如果你使用类似的东西,你可以将散列的密码存储在pastebin中。但您还必须对从用户处获得的密码进行哈希运算(例如,在检查
pword=passwd1.get()
)之后,对密码进行哈希运算。
def validateLogin():
    # use raw URL link
    response = requests.get("https://pastebin.com/raw/pzhDWPDq")
    # requests.get() returns a response object
    # so use attribute 'content' to get the real content (type is bytes)
    # then use `decode()` to convert bytes to string
    # and finally split the content into list of lines
    accounts = response.content.decode().splitlines()

    user = user1.get()
    pword = passwd1.get()

    print("username entered :", user)
    print("password entered :", pword)

    print("OK" if f"{user}::{pword}" in accounts else "Failed")
    # or update a label text