python - 如何使用 Tkinter 使两个不同的事件触发相同的操作?
问题描述
作为一名 Python 初学者,我一直在尝试编写一个简单的登录模块,我编写的其他 Python 程序可以使用它来限制谁可以打开该程序。我只是为了学习而不是实际使用它而写这个,但我需要一些帮助。
我的问题是,一旦输入凭据,我只能让我的 Enter 键或我的 Mouse-One 触发“登录”功能。我有点难以弄清楚如何让 Enter 和 Mouse click 都有效事件来触发该功能。
这是我到目前为止所拥有的。目前只有 Enter 键会触发“登录”:
from tkinter import *
def mainlogin():
# Root
root = Tk()
root.title("Login")
root.geometry("240x110")
root.protocol("WM_DELETE_WINDOW", disable_event)
# Globals
global allow_entry
allow_entry = False
# Login Credentials
my_username = 'abcd'
my_password = '1234'
# Login Function
def login(event):
if my_username == username.get() and my_password == pswd.get():
allow_entry = True
root.quit()
else:
allow_entry = False
wrong_input = Label(root, text="Wrong username or password!")
wrong_input.pack(padx=5, pady=5)
# Enter Key Bind
root.bind("<Return>", login)
# Login entry widgets
username = Entry(root)
username.pack(padx=5, pady=5)
pswd = Entry(root, show="*")
pswd.pack(padx=5, pady=5)
# Buttons
login_button = Button(root, text="Login", command=login)
login_button.pack()
### MAIN LOOP ###
root.mainloop()
def quit_login():
allow_entry = False
root.quit()
def disable_event():
pass
### NAME == MAIN ###
if __name__ == "__main__":
mainlogin()
解决方案
您可以为鼠标按钮事件设置默认参数:
def login(event=None):
if not event:
print('>> Button')
else:
print('>> Return')
......
推荐阅读
- python - Python - 尝试以某种方式从 API 结果打印 json 数据
- ms-access - 使 Access 数据库字段结构更改传播到 Delphi 应用程序
- java - 将 2 个 sql 表中的数据显示到单个 Jtable
- django - 如何在 Django 中增加会话内部?
- javascript - API 显示 [object, Object] 而不仅仅是事实文本
- python - 范围和 for 循环
- python - TensorFlow“接收到混合的批处理和非批处理张量,或者张量与规格不兼容”
- docker - 未知速记标志:-aq 中的“a”
- python - MS Edge (Chromium) - 无法使用 Selenium WebDriver
- javascript - 带有 WAI-ARIA 的可折叠部分:附加“隐藏”按钮?