Самый простой способ присвоить нажатие кнопки функции - это использовать параметр command
.Поскольку вы хотите, чтобы каждая кнопка доставляла определенное значение (число), вы можете использовать lambda
для этого.
button1= tk.Button(root, text ="1", height=7, width=20,
command=lambda:handle_pin_button("1"))
Теперь вы получаете номер, доставленный функции, и можете записать его, не обращаясь к событию.
Изучите пример ниже;это то, что вы после?
import tkinter as tk
root = tk.Tk()
pin_number = [] # Create a list to contain the pressed digits
def handle_pin_button(number):
'''Function to add the number of the button clicked to
the PIN number entry via its associated variable.'''
print("Pressed", number)
pin_number.append(number) # Add digit to pin_number
# Limit to 4 chars in length
if len(pin_number) == 4:
pin = "".join(pin_number)
for _ in range(4):
pin_number.pop() # Clear the pin_number
print("Pin number is:", pin)
return pin
button1= tk.Button(root, text ="1", height=7, width=20,
command=lambda:handle_pin_button("1"))
button1.grid(row=3,column=0)
button2 = tk.Button(root, text="2", height=7, width=20,
command=lambda:handle_pin_button("2"))
button2.grid(row=3,column=1)
button3 = tk.Button(root, text="3", height=7, width=20,
command=lambda:handle_pin_button("3"))
button3.grid(row=3,column=2)
root.mainloop()