Я экспериментирую с использованием lambda event:
и tkinter в первый раз, и у меня возникли сложности при использовании его в цикле.
Я понимаю, что мне нужно указать, что i
равно, когдаиспользуя lambda
, но я не уверен, как это сделать в сочетании с event
.Я хочу, чтобы кнопки tkinter совпали с вводом с клавиатуры, чтобы они оба печатали соответствующий текст, поэтому, когда я нажимаю 1
на моей клавиатуре, программа печатает 1
и так далее.
numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
counter = 0
for x in range(len(numbers)):
key = Button(w, text=numbers[counter],
command=lambda i=numbers[counter]: do_something(i))
root.bind(number[counter], lambda event:
do_something(numbers[counter]))
counter += 1
def do_something(event, text):
print(text)
Существующие кнопки tkinter отлично работают, потому что у меня i=numbers[counter]
после lambda
, но я получаю IndexError: list index out of range
, потому что не знаю, когда привязываю функцию do_something
.
Как я могу решить эту проблему?
TL; DR Я хочу сделать что-то это, но я не знаю, как:
root.bind(test[counter], lambda event: i=numbers[counter]: self.keyboard_input(numbers[counter]))