tkinter抛出TypeError,不确定它引用的是什么

时间:2019-02-25 19:37:02

标签: tkinter typeerror python-3.7

我正在创建一个按钮网格,然后尝试在使用tkinter单击该按钮时查找按钮的位置。但是,运行代码时,tkinter会抛出TypeError,但我不确定它所引用的行。我相信有问题的区域如下所示,但是如果需要的话,我可以张贴我写的所有内容。

def createbuttongrid(self):
    label = 1
    for row in range(8):
        for column in range(12):

            button = tk.Button(self.button_frame, text='Well %s' % label, command=lambda r=row, c=column:self.colorbuttons)
            button.bind("<ButtonPress-1>", self.colorbuttons)
            self.button_list[button] = (row, column)
            button.grid(row=row, column=column, sticky='nsew')
            label += 1

def colorbuttons(self, r, c):
    row = r
    column = c
    print("Row: %s\nColumn: %s" % (row, column))

我得到的错误在下面

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\[MY_NAME]\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
TypeError: colorbuttons() missing 1 required positional argument: 'c'

这两个函数都在一个类中,包括一个__init__,用于在需要时生成和设置主窗口。

感谢您的帮助!

编辑

我最终在下游进行了一些更改,最后得到了以下内容

def createbuttongrid(self):
    label = 1
    for row in range(8):
        for column in range(12):

            button = tk.Button(self.button_frame, text='Well %s' % label)
            button.bind("<Button-1>", self.colorbuttons)
            button.grid(row=row, column=column, sticky='nsew')
            self.button_list[button] = (row, column)
            label += 1

def colorbuttons(self, event):
    button = event.widget
    print(button, self.button_list[button])

使用它,可以获得网格中按钮的行和列(这是我最终追求的,也许可以更早地指定)。非常感谢两位在这里发表评论的人,这些评论最终为我指明了正确的方向。

0 个答案:

没有答案