我第一次尝试使用lambda event:
和tkinter,在循环中使用它时遇到了困难
我知道在使用lambda
时需要指定i
等于什么,但我不确定如何与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按钮工作得很好,因为我在lambda
之后有i=numbers[counter]
,但是我得到了IndexError: list index out of range
,因为我在绑定do_something
函数时没有
我怎样才能解决这个问题
TL;DR 我想这样做,但我不知道怎么做:
root.bind(test[counter], lambda event: i=numbers[counter]: self.keyboard_input(numbers[counter]))
同样,您正在创建一个带有默认值的可选参数:
(尽管
i
的名字选择有点奇怪。)考虑调用一个函数,这样就不需要重复这种攻击,如果不使用外部的计数器作为索引,则直接在列表项上循环:
相关问题 更多 >
编程相关推荐