ユーザーとパスワードが等しい場合にログインボタンをクリックすると、「ログイン成功/失敗」テキストが表示されます。関数のIf/else文が機能しない
私が抱えている問題は、ユーザーとパスワードが何であっても、失敗したメッセージの代わりに常に「成功」メッセージが表示されることです。
私は.get
を使用して、ユーザーの入力を取得し、変数に保存しています。相続人
私のコード:
from tkinter import *
root = Tk()
label_name = Label(root, text="Username", fg="black")
label_password = Label(root, text="Password", fg="black")
input_name = Entry(root)
name = input_name.get()
input_password = Entry(root, show="*")
password = input_password.get()
label_name.grid(row=0, column=0, sticky=E)
label_password.grid(row=1, column=0, sticky=E)
input_name.grid(row=0, column=1)
input_password.grid(row=1, column=1)
checkbox = Checkbutton(root, text="Remember me")
checkbox.grid(columnspan=2, sticky=W)
login_button = Button(root, text="Login")
login_button.grid(row=1, column=2)
login_success = Label(root, text="Welcome", fg="black")
login_fail = Label(root, text="login fail", fg="black")
def login(event):
if name == password:
for widget in root.winfo_children():
widget.grid_forget()
login_true = Label(root, text="Welcome", fg="black")
login_true.grid()
elif name != password:
for widget in root.winfo_children():
widget.grid_forget()
login_false = Label(root, text="login fail", fg="black")
login_false.grid()
login_button.bind("<Button-1>", login)
root.mainloop()
EDIT: は、私はまた、 "コマンド" 属性を使用しますが、同じ結果でした:
def login():
name = input_name.get()
password = input_password.get()
if name == password:
for widget in root.winfo_children():
widget.grid_forget()
login_true = Label(root, text="Welcome", fg="black")
login_true.grid()
elif name != password:
for widget in root.winfo_children():
widget.grid_forget()
login_false = Label(root, text="login fail", fg="black")
login_false.grid()
login_button = Button(root, text="Login", command=login)
login_button.grid(row=1, column=2)
root.mainloop()
をEDIT2: は、新しい条件
を追加することによって修正されましたdef login():
if input_name.get() == "" or input_password.get() == "":
for widget in root.winfo_children():
widget.grid_forget()
login_false = Label(root, text="login fail", fg="black")
login_false.grid()
elif input_name.get() == input_password.get():
for widget in root.winfo_children():
widget.grid_forget()
login_true = Label(root, text="Welcome", fg="black")
login_true.grid()
elif input_name.get() != input_password.get():
for widget in root.winfo_children():
widget.grid_forget()
login_false = Label(root, text="login fail", fg="black")
login_false.grid()
私はあなたを信じていません。その編集は私と他の1人のユーザーのために働きます。 2つのテキストボックスには何を入力していますか?彼らが違うなら、それは失敗しません。 –
@EthanFieldはい私は間違っていました。今すぐ働いて、助けてくれてありがとう。 –
Stack Exchangeで許可されていない "[SOLVED]"を削除する編集を提案しました。[理由はこちら](https://meta.stackexchange.com/a/116105/372286)を参照してください。 –