Как я могу превратить это в одну кнопку?

#python #tkinter

Вопрос:

Итак, я пытаюсь сделать так, чтобы, если поле ввода == пароль (123), кнопка для продолжения (кнопка ввода) становится активной, а не отключенной. Я смог сделать это только с помощью 2 кнопок, хотя, если ввести «123», а затем удалить, состояние «кнопка ввода» не изменится. Как я мог бы сделать эту функцию полностью в «кнопке ввода» вместо того, чтобы иметь 2 кнопки, а также обновлять ее, если указанный пароль удален?

 root = Tk() root.geometry("500x300")   e = Entry(root) e.insert(0, "Enter your password")  def check():  password = e.get()  if password == "123":  enterbutton["state"] = ACTIVE  if password != "123":  enterbutton["state"] = DISABLED  button = Button(root, text="b", width=10, height=3, command=check) enterbutton = Button(root, text="Enter", state=DISABLED, width=10, height=3,)  e.pack(pady=30) enterbutton.pack() button.pack() mainloop()  

Комментарии:

1. Непонятно, чего вы хотите на самом деле? Вы хотели Enter , чтобы кнопка включалась/отключалась сама по себе при использовании b кнопки?

2. Да, я хочу, чтобы кнопка ввода была отключена/включена в соответствии с тем, есть ли «123» в поле ввода. @acw1668

3. Вы имеете в виду, что Enter кнопка будет включена/отключена в зависимости от содержимого Entry виджета без нажатия какой-либо кнопки ?

Ответ №1:

Я предлагаю использовать StringVar для поля ввода. Используя его trace метод, вы можете задать функцию, которая вызывается каждый раз при изменении текста. Кроме того, я настоятельно рекомендую импортировать tkinter как tk вместо импорта всего с помощью * импорт.

 import tkinter as tk  root = tk.Tk() root.geometry("500x300")  var = tk.StringVar() var.set("Enter your password") e = tk.Entry(root, textvariable=var)  def check(*args):  password = var.get()  if password == '123':  button['state'] = 'normal'  else:  button['state'] = 'disabled'   var.trace('w', check)  button = tk.Button(root, text="Enter", state='disabled', width=10, height=3,)  e.pack(pady=30) button.pack() root.mainloop()