我想做一个密码存储和哈希系统的图形用户界面,但我遇到了一个障碍。我有两个按钮,一个用来登录,另一个用来创建账户。当点击登录按钮时,一个新的tkinter窗口打开,并显示登录页面。然而,登录按钮应该显示在第二页,但它没有,我不知道为什么。这里是整个系统的代码。
import tkinter
from tkinter import*
username = ("Tom")
password = ("test")
usernameguess1 = ("")
passwordguess1 = ("")
def trylogin():
print ("Trying to login...")
if usernameguess.get() == username:
print ("Complete sucsessfull!")
messagebox.showinfo("Sucess ", "Successfully logged in.")
else:
print ("Error: (Incorrect value entered)")
messagebox.showinfo("Error", "Sorry, but your username or password is incorrect. Try again")
def loginpage():
#Gui Formatting
window = tkinter.Tk()
window.resizable(width=FALSE, height=FALSE)
window.title("HasherTest_V0.1 Login")
window.geometry("300x150")
#Username and password boxes
usernametext = tkinter.Label(window, text="Username:")
usernameguess = tkinter.Entry(window)
passwordtext = tkinter.Label(window, text="Password:")
passwordguess = tkinter.Entry(window, show="*")
usernameguess1 = usernameguess
#login button
attemptlogin = tkinter.Button(text="Login", command=trylogin)
usernametext.pack()
usernameguess.pack()
passwordtext.pack()
passwordguess.pack()
attemptlogin.pack()
window.mainloop()
#Gui Formatting (again)
window = tkinter.Tk()
window.resizable(width=FALSE, height=FALSE)
window.title("HasherTest_V0.1")
window.geometry("300x150")
loginbutton = tkinter.Button(text="Login", command=loginpage)
loginbutton.pack()
这里是第二个窗口的代码. 由于某些原因,我必须把tkinter消息框也导入,否则我的IDLE就会出错。
import tkinter
from tkinter import *
from tkinter import messagebox
username = ("Tom")
password = ("test")
usernameguess1 = ("")
passwordguess1 = ("")
def trylogin():
print ("Trying to login...")
if usernameguess.get() == username:
print ("Complete sucsessfull!")
messagebox.showinfo("Sucess ", "Successfully logged in.")
else:
print ("Error: (Incorrect value entered)")
messagebox.showinfo("Error", "Sorry, but your username or password is incorrect. Try again")
#Gui Formatting
window = tkinter.Tk()
window.resizable(width=FALSE, height=FALSE)
window.title("HasherTest_V0.1 Login")
window.geometry("300x150")
#Username and password boxes
usernametext = tkinter.Label(window, text="Username:")
usernameguess = tkinter.Entry(window)
passwordtext = tkinter.Label(window, text="Password:")
passwordguess = tkinter.Entry(window, show="*")
usernameguess1 = usernameguess
#login button
attemptlogin = tkinter.Button(text="Login", command=trylogin)
usernametext.pack()
usernameguess.pack()
passwordtext.pack()
passwordguess.pack()
attemptlogin.pack()
window.mainloop()
谢谢你的帮助!
在这里,我完全重做了你的代码。我完全重写了你的代码,它可以工作了(据我所知)。
我完全删除了 textvariable
和 StringVar()
. 它们是不需要的。你的代码没有工作的原因是你检查文件名 "string",但你需要添加".txt",以获得一个完美的平等。
的代码。
import tkinter
from tkinter import*
from tkinter import messagebox
username = ("Tom")
password = ("test")
usernameguess1 = ("")
passwordguess1 = ("")
def loginpage():
#Gui Formatting
root = tkinter.Toplevel()
#root.resizable(width=FALSE, height=FALSE)
root.title("HasherTest_V0.1 Login")
root.geometry("300x150")
#Username and password boxes
usernametext = tkinter.Label(root, text="Username:")
usernameguess = tkinter.Entry(root)
passwordtext = tkinter.Label(root, text="Password:")
passwordguess = tkinter.Entry(root, show="*")
usernameguess1 = usernameguess
def trylogin():
print ("Trying to login...")
if usernameguess.get() == username:
print ("Complete sucsessfull!")
messagebox.showinfo("Sucess ", "Successfully logged in.")
else:
print ("Error: (Incorrect value entered)")
messagebox.showinfo("Error", "Sorry, but your username or password is incorrect. Try again")
#login button
attemptlogin = tkinter.Button(root, text="Login", command=trylogin)
usernametext.pack()
usernameguess.pack()
passwordtext.pack()
passwordguess.pack()
attemptlogin.pack()
window.mainloop()
#Gui Formatting (again)
window = tkinter.Tk()
window.resizable(width=FALSE, height=FALSE)
window.title("HasherTest_V0.1")
window.geometry("300x150")
loginbutton = tkinter.Button(window, text="Login", command=loginpage)
loginbutton.pack()
window.mainloop()
我还冒昧地像@stovfl所说的那样,添加了".txt"。Toplevel()
实例,而不是使用 Tk()
多次。
希望对大家有所帮助!