首页 文章

Tkinter按钮调用对象的方法

提问于
浏览
1

我有一些对象,它们都是同一个类的实例;每个对象都有(作为其属性之一)一个tkinter按钮,我希望每个tkinter按钮对它所属的对象执行一个方法 . 我真的不确定如何去做这件事 . 我尝试修改lambda函数,并将“self”替换为“self_”,以防tkinter已经将“self”传递给按钮的命令,但这些都没有奏效;我是新手,并且在今天之前没有遇到lambda函数所以它并没有让我感到惊讶 . 示例代码如下 - 请有人解释如何以简单,简洁和pythonic的方式使其工作,或者如果不存在这样的解决方案然后提供解决方法?提前致谢

import tkinter as tk
from tkinter import ttk

class SpecialButton():

    def __init__(self, row):

        self.button = ttk.Button(root, text="button", command=self.delete)
        self.button.grid(row=row, column=1)

        self.label = ttk.Label(root, text="label")
        self.label.grid(row=row, column=2)

    def delete(self):

        self.button.forget()
        self.label.forget()
        #some other stuff

root = tk.Tk()

for row in range(3):
    SpecialButton(row)

root.mainloop()

1 回答

  • 2

    您的代码唯一的问题是您需要调用 grid_forget 而不是 forget .

    此外,代码有点误导 - delete 方法实际上并没有删除任何东西,它只是从视图中删除它 . 小部件仍然存在并占用内存 . 你知道吗?如果您确实要删除小部件,请调用 destroy 方法 .

相关问题