python tkinter 条目未显示

问题描述 投票:0回答:1
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中打印或在调试区

python tkinter
1个回答
0
投票

您遇到的问题是因为在用户在输入字段中输入任何值之前调用了

signupForm()
函数。要解决此问题,您需要将输入字段的值传递给
signupForm()
函数。具体方法如下:

  1. 修改
    signupForm()
    函数以接受用户名和密码参数。
  2. 单击按钮时,将输入字段的值传递给
    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()
函数,您将看到它们打印在控制台中。

© www.soinside.com 2019 - 2024. All rights reserved.