from tkinter import *
from tkinter import messagebox as msg
root = Tk()
users = {'pawan': '123'}
userval = StringVar()
password = StringVar()
uservals = StringVar()
passwords = StringVar()
def submitForm():
if userval.get() in users:
root.destroy()
main = Tk()
main.geometry("200x200")
else:
msg.showinfo(message='Invalid User or Password')
print(users)
def signupForm():
print(uservals.get())
print(passwords.get())
root.geometry("655x333")
root.title("Library")
tframe = Frame(root, bg="black")
tframe.pack(side="top", fill="both")
heading = Label(tframe, text="Welcome to Our library", bg="red", borderwidth=12).pack()
fframe = Frame(root, width=400, height=200)
fframe.pack()
user = Label(fframe, text="Username").grid()
passw = Label(fframe, text="Password").grid(row=1, column=0)
userin = Entry(fframe, textvariable=userval)
userin.grid(row=0, column=1)
passwin = Entry(fframe, textvariable=password, show="*")
passwin.grid(row=1, column=1)
loginb = Button(fframe, text='Login', command=submitForm).grid(row=3, column=0)
def signup():
sign = Tk()
sign.geometry("400x200")
Label(sign, text="Enter Email").grid()
Label(sign, text="Enter Password").grid(row=1, column=0)
si = Entry(sign, textvariable=uservals)
si.grid(row=0, column=1)
Entry(sign, textvariable=passwords, show="*").grid(row=1, column=1)
Button(sign, text='Signup', command=signupForm).grid(row=3, column=0)
Button(fframe, text='Signup', command=signup).grid(row=3, column=1)
root.mainloop()
这是我的代码,我想在signupForm中打印注册函数的条目值(textvariable=passwords和textvariable=uservals),之后我可以根据需要使用,但是当我单击按钮时,只有空的东西在shell中打印或在调试区
您遇到的问题是因为在用户在输入字段中输入任何值之前调用了
signupForm()
函数。要解决此问题,您需要将输入字段的值传递给 signupForm()
函数。具体方法如下:
signupForm()
函数以接受用户名和密码参数。signupForm()
函数。这是修改后的代码:
from tkinter import *
from tkinter import messagebox as msg
root = Tk()
users = {'pawan': '123'}
userval = StringVar()
password = StringVar()
uservals = StringVar()
passwords = StringVar()
def submitForm():
if userval.get() in users:
root.destroy()
main = Tk()
main.geometry("200x200")
else:
msg.showinfo(message='Invalid User or Password')
print(users)
def signupForm(username, password):
print("Username:", username)
print("Password:", password)
root.geometry("655x333")
root.title("Library")
tframe = Frame(root, bg="black")
tframe.pack(side="top", fill="both")
heading = Label(tframe, text="Welcome to Our library", bg="red", borderwidth=12).pack()
fframe = Frame(root, width=400, height=200)
fframe.pack()
user = Label(fframe, text="Username").grid()
passw = Label(fframe, text="Password").grid(row=1, column=0)
userin = Entry(fframe, textvariable=userval)
userin.grid(row=0, column=1)
passwin = Entry(fframe, textvariable=password, show="*")
passwin.grid(row=1, column=1)
loginb = Button(fframe, text='Login', command=submitForm).grid(row=3, column=0)
def signup():
sign = Tk()
sign.geometry("400x200")
Label(sign, text="Enter Email").grid()
Label(sign, text="Enter Password").grid(row=1, column=0)
si = Entry(sign, textvariable=uservals)
si.grid(row=0, column=1)
Entry(sign, textvariable=passwords, show="*").grid(row=1, column=1)
Button(sign, text='Signup', command=lambda: signupForm(uservals.get(), passwords.get())).grid(row=3, column=0)
Button(fframe, text='Signup', command=signup).grid(row=3, column=1)
root.mainloop()
完成这些更改后,当您单击“注册”按钮时,它会将输入字段的值传递给
signupForm()
函数,您将看到它们打印在控制台中。