我当前有一个绑定到窗口的事件,因此当按下enter键时,将调用checkPassword()。这可以很好地工作,但是当调用checkPassword()时,事件仍然是绑定的,因此使用enter键清除错误框,当将条目留空时,不会像它自己调用的那样工作。你知道吗
def logIn():
usernameLabel = Label(frame, text = 'Username: ')
passwordLabel = Label(frame, text = 'Password: ')
usernameEntry = Entry(frame)
passwordEntry = Entry(frame, show="*")
Button1 = Button(frame, text = 'Log in', command = lambda: checkPassword(usernameEntry, passwordEntry))
usernameLabel.pack()
usernameEntry.pack()
passwordLabel.pack()
passwordEntry.pack()
Button1.pack(side=RIGHT)
window.bind("<KeyRelease-Return>", lambda event: checkPassword(usernameEntry, passwordEntry))
def checkPassword(usernameEntry, passwordEntry):
username = usernameEntry.get()
password = passwordEntry.get()
if username == '':
box.showerror('Error', 'Field can not be blank')
return
elif password == '':
box.showerror('Error', 'Field can not be blank')
return
else:
# do something
from tkinter import *
import tkinter.messagebox as box
window = Tk()
frame = Frame(window)
logIn()
frame.pack()
window.mainloop()
为了解决这个问题,我尝试在checkPassword函数中解除窗口事件的绑定,这个函数也可以工作,但是在返回logIn()之后,logIn()中的窗口绑定不再工作了?(按钮等其他功能正常)。你知道吗
def checkPassword(usernameEntry, passwordEntry):
window.unbind("<KeyRelease-Return>")
而不是
尝试使用:
正在触发
release
绑定,因为按键会关闭对话框,然后释放会再次触发绑定。你知道吗相关问题 更多 >
编程相关推荐