Python使用tkinter命令按钮传递参数
我正在创建一个登录系统,用户在其中输入密码和用户名,按下一个按钮,它就会进入功能以检查密码Python使用tkinter命令按钮传递参数,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在创建一个登录系统,用户在其中输入密码和用户名,按下一个按钮,它就会进入功能以检查密码 from tkinter import * def login(): Usr = Tk() Usr.title("Login") Usr.geometry("200x150+860+400") Usr.configure(bg="grey22") usrBox = Label(Usr, text = &q
from tkinter import *
def login():
Usr = Tk()
Usr.title("Login")
Usr.geometry("200x150+860+400")
Usr.configure(bg="grey22")
usrBox = Label(Usr, text = "Username:", font=( "arial",12, "bold"), fg="white", bg="grey22").place(x=50, y=10)
passbox = Label(Usr, text = "Password:", font=( "arial",12, "bold"), fg="white", bg="grey22").place(x=50, y=60)
usrName = StringVar()
usernameInput = ""
passwordInput = ""
PssWord = StringVar()
usrName = Entry(Usr, textvariable= usernameInput, width=15, bg="lightgrey").place(x=50, y=37)
PssWord = Entry(Usr, textvariable= passwordInput, width=15, bg="lightgrey").place(x=50, y=87)
enter = Button(Usr, text = "login", width=11, height = 1, bg="lightgrey", activebackground="grey", font=("arial", 10, "bold"), command = checkPassword: action(usernameInput, passwordInput)).place(x=50, y=110)
Usr.mainloop()
def checkPassword(usernameInput, passwordInput):
print(usernameInput, passwordInput)
login()
该操作返回无效语法您的代码存在多个问题:
- 您必须创建一个调用
函数的checkPassword
lambda
- 您创建了一些
,但随后将普通字符串传递给输入字段并在回调中使用它们;这些将不会用实际值更新,请改用StringVar
StringVar
- 如果你做了
,那么x=Widget(…).layout(…)
不是Widget,而是x
,这是所有布局函数(None
,pack
,grid
等)的结果,但这不是问题,因为你无论如何都不使用所有这些变量place
checkPassword
函数中,使用StringVar.get()
获取实际值。您可以使用:
usrName = Entry(Usr, bd=3)
usrName.place(x=75, y=35)
enter = Button(Usr, text="Send", width=15, height=2,
command=lambda: checkPassword(usrName.get()))
enter.place(x=25, y=75)
command=lambda:checkPassword(usernameInput,passwordInput)
另外,usrBox=Label(…).place(x=50,y=10)
不是小部件,而是None
。另外,两个“文本变量”应该是实际的StringVar
,而不仅仅是普通字符串。
usrName = Entry(Usr, bd=3)
usrName.place(x=75, y=35)
enter = Button(Usr, text="Send", width=15, height=2,
command=lambda: checkPassword(usrName.get()))
enter.place(x=25, y=75)