gpt4 book ai didi

Python tkinter,而不是事件错误

转载 作者:行者123 更新时间:2023-11-30 22:58:54 29 4
gpt4 key购买 nike

Class xy:
...
...
...
self.btns = []
for x in enumerate(dates):
self.btns.append(tk.Button(bf, text = x[1], height = 2, width = 12, command = lambda i = x[0]: self.show_frame(pages[i])))
self.btns[x[0]].pack(side = "left")
self.btns[x[0]].bind("<Button-1>", lambda i = x[0]: self.active(i)) # THERE IS AN ERROR

self.show_frame(pages[0])


def show_frame(self, key):
frame = self.frames[key]
frame.tkraise()

def active(self, index):
self.btns[index].config(relief = "sunken")

当我这样做时,会发生这种情况:

"TypeError: list indices must be integers or slices, not Event"I'm trying figure it out for hour.

最佳答案

当您使用bind时,tkinter会自动传递一个事件对象作为第一个参数。即使您使用 lambda 为 i 设置默认值,tkinter 始终将其设置为事件对象。

您需要将 lambda 更改为:

lambda event, i=x[0]: self.active(i)

关于Python tkinter,而不是事件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35977446/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com